使用verdaccio搭建npm私服

317 阅读3分钟

一般下载npm包都是从npm官方源地址下载的,发布的也是发布到npm官方的源地址。有时候可能会存在这样的需求: 公司内开发的UI库、工具类、公用业务逻辑代码等想打包成npm包,但是又不想开源,只想自己公司内部使用。这时候就需要搭建一个npm私服,本文分享一个通过verdaccio如何搭建一个npm私服。

优势

先说说npm私服的优势:

  1. 私有的npm包: 只有内部人员可以访问,保证源码私密性。
  2. 包缓存: 除开第一次下载,之后的每次下载都是缓存,不用从npm源下载数据。

使用

为了能够让阅读者能实际上手体验整个搭建过程,我就在本地环境中演示搭建一个Verdaccion。如果是公司内部使用,只需要在服务器上装好node环境。后面操作都是差不多的。

安装

npm install -g verdaccio

可以使用 verdaccio -v 查看是否安装成功。

启动服务

直接输入 verdaccio 即可开启Verdaccio服务。

会打印这些内容:

图片.png 第一行是配置文件地址,一个 config.yaml 文件。 最后一行是启动的web页面:

图片.png

配置源

源地址也就是npm下载的地址。现在需要改变原有的npm源地址,因为需要经过本地的verdaccio服务。当verdaccio在本地没有找到你想要的包的时候(一般出现在第一次下载),就会在配置文件中去找uplinks配置的其它源地址,从这些源地址中下载。

uplinks:
  npmjs:
    url: https://registry.npmjs.org/
  taobao:
    url: https://registry.npmmirror.com/

默认有一个npm的官方源地址,但是官方地址有时候抽风下不下来,可以自己添加一个淘宝的镜像地址。

修改源地址

nrm use ps 这里用到了 nrm 来管理源地址。为了保证讲述verdaccio的流畅性,对于 nrm的使用我放在最后,可以先去最后面看完再回来继续看。

验证

现在npm下载的源地址已经是本地的verdaccio服务,可以试着安装一个 pnpm i lodash 来看看效果,第一次安装的lodash还是得去配置中的uplinks中的源下载。

下载完成之后,在配置文件 config.yaml 的同级目录storage 文件夹内会多一个loadsh文件,这就是本地缓存的数据。我这里已经下载很多包,初始情况下是只有一个 .verdaccio-db.json 文件。

图片.png 那么想验证第二次下载是不是不需要从npm官方或者其它三方的源下载了,可以先卸载掉lodash,然后断掉本机的网络,再重新安装。可以看到依然被安装上了,就证明这个包存在本地缓存中了。

发布npm包到本地私服

首先需要创建一个账号

npm addUser

输入用户名密码邮箱即可。

然后 npm login 登录当前账号

执行 npm publish 即可。如果发布失败可以重试一次。

发布成功后可以在verdaccio的本地服务网站看到刚刚的包。首先要登录网站,账号就是通过 npm addUser 创建的账号:

图片.png

执行 pnpm i test 后就可以在node_modules 中看到刚刚上传到私服中的包了 图片.png

nrm

更方便的修改npm源地址

安装

npm i -g nrm

列举当前的nrm源

nrm ls

切换源

nrm use taobao

新增源

由于我们现在使用的是私服,所以任何npm包的下载,发布都必须先走自己的源,所以需要将源切换为本地的服务。

新增: nrm add ps http://localhost:4873/

看完了返回verdaccio

参考: juejin.cn/post/684490…