NPM私服搭建步骤及使用

在工作中,我们常常会开发很多通用性代码,比如我们用过的UI库、工具类、公用业务逻辑代码等。这时可将这些库发布到npm,需要的项目安装使用即可,但是发布到公网npm无法保证源码的私密性,这时我们就需要使用到私有npm仓库。

私有npm仓库优势:

  1. 只能在公司局域网使用,保证了代码的私密性
  2. 因为使用局域网,依赖包下载更快
  3. 可以将发布和安装npm的包进行权限配置,利于npm仓库的维护
  4. 修改了第三方npm包,但是发布包的作者未将PR合并到master,导致该功能无法在安装包后引用,这时我们可以将三方包源码修改,发布于私有仓库,即可下载安装,而不用在 node_modules 中更改源码

使用 Verdaccio

Verdaccio 是用 nodejs 开发的轻量级私有npm代理服务,因此使用 Verdaccio 前需要安装 node。如何安装node不是我们这篇文章的重点,可自行搜索资料安装node。

安装 Verdaccio

使用 npm 安装 Verdaccio ,需要全局安装,所以注意权限问题。

	npm install -g verdaccio

安装完以后,执行

	verdaccio -h

出现版本号相关提示则表示安装成功。如果提示命令找不到,请重启控制台。

运行 verdaccio

运行 verdaccio 命令很简单,执行verdaccio即可。

	verdaccio

这时,执行结果如下所示
在这里插入图片描述
这是提示我们,verdaccio 的配置文件放在了用户目录下的 .config/verdaccio/config.yaml 中,编辑该文件即可修改对于 verdaccio 的配置。相关配置我们在后一段落介绍。

打开浏览器,输入 localhost:4873,就能看到用于展示包的网页,因为我们目前还没有上传任何包,所以该页面为空,并且提示发布包到该仓库。
在这里插入图片描述

配置 verdaccio

verdaccio 的配置文件为 ~/.config/verdaccio/config.yaml ,使用编辑器或者 vim 打开该文件。
以下介绍重要参数的含义

storage

配置发布到私有仓库包的存放地址,默认存放于 ~/.config/verdaccio/storage 中,我们可以定期将该文件中的内容进行清理,但是一定要谨慎,因为该文件夹中存放的包不止我们自己发布的,还有一些从公有仓库中拉取并缓存的包(具体如何配置拉取缓存,后续参数介绍)。

uplinks

也许,我们的包不止发布到了一个仓库,如果公司按照业务线划分了几个前端部门,部门之间技术独立但能共享,这时如果我们想在使用自己发布的npm私有包的同时,还期望可以使用其他团队开发的npm包,这时我们就可以通过指定该参数实现。换句话说,npm公有仓库也能理解为我们的另一个仓库,像这样的仓库还有淘宝的仓库等。配置如下,在这里其实只是做一个定义,真正的使用其实是在包 packages 管理的参数中

uplinks:
    npmjs:
        url: https://registry.npmjs.org
    taobao:
        url: https://registry.npm.taobao.org/
packages

该参数是整个配置中最为重要的一个,因为通过配置该参数,能达到设定包权限,设定包发布与使用的权限,设置包是否代理到公有npm仓库等

packages:
  '@feiye/*':
    access: $all
    publish: $authenticated
    unpublish: $authenticated
  '**':
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    # if package is not available locally, proxy requests to 'npmjs' registry
    proxy: npmjs

通过以上参数的配置,我们就约定了,如果你发布的包是 @feiye 前缀的,那就表明是私有包,不会代理到外部。如果发布的包没有 @feiye 前缀,则会走 ** 的逻辑,即所有不包含 @feiye 前缀的包,不难看出,proxy: npmjs 指明了如果该包上传则会被代理到npm公有仓库,如果在下载某个不包含 @feiye 前缀的包时,会自动代理到npm公有仓库查找资源并下载,并且默认会将拉取的资源缓存到我们前面指定的 storage 文件夹中。

listen

相信开发过后端的同学都不会陌生,服务启动在什么端口,verdaccio默认监听在4873端,我们可以通过指定 listen 参数修改配置

listen:
    0.0.0.0: 3000

设置完重启 verdaccio,端口便监听在了3000

到这里npm私有仓库的配置启动就完成了,接下来我们就可以开发包并发布了,但在这之前,推荐大家一个管理npm源的工具,nrm

设置npm源

使用 npm 安装 nrm
npm install -g nrm
列出当前 nrm 存储的npm源
nrm ls

结果如下
在这里插入图片描述

使用指定源

比如我们现在想使用npm官方源

nrm use feiye

结果如下

在这里插入图片描述

添加用户自定义的源

添加命令很简单,只需要指定源名和源地址即可

nrm add feiye http://zhaiyj.itodouble.top/

再运行查看命令就能发现,列表中多了一条记录,正是我们添加的源

登录npm

注意,登录前一定要保证此时的npm源是指向我们私有仓库的,使用nrm即可完成切换

nrm use feiye
添加用户

如果是第一次登录,则需要注册用户,如果服务未做特殊权限的设置,直接添加用户即可,命令如下

npm addUser

跟随提示填写用户名、密码、邮箱即可
在这里插入图片描述

发布包

先切换到要发包的目录中,执行以下命令

npm publish

在这里插入图片描述

使用pm2启动verdaccio

在这里插入图片描述

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值