搭建npm私服

513 阅读2分钟

描述:有时候公司的一些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` # 注意是反引号
   

显示如下截图,表明安装成功 image.png 之后在浏览器里访问,显示如下界面

image.png

为了保持长后台使用pm2启动

pm2 start verdaccio

# 查看实时日志
pm2 show verdaccio

下边的步骤都是在用户端进行操作

最后一步按照页面提示给私服添加账号(在用户端操作)

npm adduser --registry http://192.168.31.128:4000/

image.png

最后添使用nrm添加源,发布的时候切换到添加的源(如果没有安装,可以先安装一下)

补充说明:增加权限设置,只允许指定的人发布,修改config.yaml文件

1、查看config.yaml配置文件 一般来说此配置文件在/创建用户/.config/verdaccio中,如果你不确定,你可以直接在服务器上执行verdaccio命令,第一个config file即文件所在位置. image.png

打开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,我们一般会使用 yarntaobao等镜像地址,配置如下:

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

image.png