描述:有时候公司的一些npm包需要保护,但又不想推到npm社区,这时就需要搭建npm私服,现借用verdaccio搭建npm私服 verdaccio.org/zh-CN/docs/…
- 1、准备工作:需要安装nodejs,pm2
1、开始安装:
npm i verdaccio -g # 全局安装
补充:安装之后可以先建立软连接(记得改成你自己的安装目录)
ln -s /etc/nodejs/node-v16.16.0-linux-x64/bin/verdaccio /usr/bin/verdaccio
2、打开配置文件添加端口,路径为/root/.config/verdaccio/config.yaml(也可能是/root/verdaccio/config.yaml),主要还是找到安装目录,在文件最后一行添加
listen: 0.0.0.0:4000
之后启动verdaccio服务
verdaccio
补充:使用软连接的方式建立之后如果使用pm2启动服务报错找不到该模块,可以使用以下命令启动
pm2 start `which verdaccio` # 注意是反引号
显示如下截图,表明安装成功
之后在浏览器里访问,显示如下界面
为了保持长后台使用pm2启动
pm2 start verdaccio
# 查看实时日志
pm2 show verdaccio
下边的步骤都是在用户端进行操作
最后一步按照页面提示给私服添加账号(在用户端操作)
npm adduser --registry http://192.168.31.128:4000/
最后添使用nrm添加源,发布的时候切换到添加的源(如果没有安装,可以先安装一下)
补充说明:增加权限设置,只允许指定的人发布,修改config.yaml文件
1、查看config.yaml配置文件
一般来说此配置文件在/创建用户/.config/verdaccio中,如果你不确定,你可以直接在服务器上执行verdaccio命令,第一个config file即文件所在位置.
打开config.yaml,查看packages项,原始内容为:
packages:
'@*/*':
# scoped packages
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: npmjs
'**':
# allow all users (including non-authenticated users) to read and
# publish all packages
#
# you can specify usernames/groupnames (depending on your auth plugin)
# and three keywords: "$all", "$anonymous", "$authenticated"
access: $all
# allow all known users to publish/publish packages
# (anyone can register by default, remember?)
publish: $authenticated
unpublish: $authenticated
# if package is not available locally, proxy requests to 'npmjs' registry
proxy: npmjs
字段含义:
scope有两种模式
一种是 @/ 表示某下属的某项目
另一种是 * 匹配项目名称(名称在package.json中有定义)
权限:
access: 表示哪一类用户可以对匹配的项目进行安装(install)publish: 表示哪一类用户可以对匹配的项目进行发布(publish)proxy: 如其名,这里的值是对应于 uplinks 的名称,如果本地不存在,允许去对应的uplinks去取。 值的含义:$all表示所有人(已注册、未注册)都可以执行对应的操作$authenticated表示只有通过验证的人(已注册)可以执行对应操作,注意,任何人都可以去注册账户。$anonymous表示只有匿名者可以进行对应操作(通常无用) 如果要指定某个用户才有权限,可以直接写上用户名,多个用户用空格隔开,比如:
publish: michael martin
修改完成后请重启nginx和pm2。当前已存在的用户列表可在htpasswd文件中查看。
上游链配置
Verdaccio 默认 uplinks 只有一个 npmjs,我们一般会使用 yarn、taobao等镜像地址,配置如下:
uplinks:
npmjs:
url: https://registry.npmjs.org/
taobao:
url: https://registry.npmmirror.com/
yarn:
url: https://registry.yarnpkg.com/