找了一圈,目前可免费使用的方案 verdaccio 还算不错,本次安装用到的几个库 wget nodeverdaccio
pm2nginx,已经安装过了就不用重复安装了

准备工作

安装 node

这里我用的是一台阿里云的服务器,进入 /usr/local/lib 文件夹下,安装 wget

yum install -y wget

安装成功之后,下载 node

wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz

解压 node 并且删除安装包

tar -xvf node-v10.9.0-linux-x64.tar.xz && rm -rf node-v10.9.0-linux-x64.tar.xz

重命名为 nodejs

mv node-v10.9.0-linux-x64 nodejs

建立软连接

ln -s /usr/local/lib/nodejs/bin/npm /usr/local/bin/
ln -s /usr/local/lib/nodejs/bin/node /usr/local/bin/

安装 verdaccio

npm i verdaccio -g

建立软连接

ln -s /usr/local/lib/nodejs/bin/verdaccio /usr/local/bin/

安装 pm2

npm i pm2 -g

建立软连接

ln -s /usr/local/lib/nodejs/bin/pm2 /usr/local/bin/

安装 nginx

下载 nginx

wget http://nginx.org/download/nginx-1.13.7.tar.gz

解压 nginx 并且删除安装包

tar -zxvf nginx-1.13.7.tar.gz && mv nginx-1.13.7 nginx

重命名为 nginx

mv nginx-1.13.7 nginx

依次执行 cd nginx ./configure make && make install cd conf,修改 nginx.conf

server {
  listen 80 default_server;
  location / {
    proxy_pass              http://127.0.0.1:4873/;
    proxy_set_header        Host $host;
  }
}

使用

基本使用

1、启动 nginx: sudo nginx 或者重启 nginx: sudo nginx -s reload
2、使用 pm2 启动 verdaccio, pm2 start verdaccio
1611738759270.jpg

启动成功后,浏览器访问 http://ip 可以看到启动成功了

根据页面的提示,发布一个包试试。在自己电脑上新开一个终端,新建一个文件夹 npm_test,执行 npm init -y
然后根据提示创建一个用户 npm adduser --registry ip 并且发布包 npm publish --registry ip,发布成功之后再访问 http://ip 就可以看到包上传上去了
1611799645282.jpg

verdaccio 配置

配置 config.yaml 配置文件

在服务器上输入 verdaccio,第一行 /root/.config/verdaccio/config.yaml 就是配置文件的位置
1611801157162.jpg

进入 /root/.config/verdaccio 目录,目录下有 config.yamlhtpasswd 两个文件和 storage 文件夹。打开 config.yaml 文件
1611801438510.jpg

我们发布的包存放在 storage 文件夹,我们添加的用户在 htpasswd 文件。这里重点关注 packages 这个字段

access: $all
publish: $authenticated
unpublish: $authenticated
proxy: npmjs
  • access: 表示哪一类用户可以对匹配的项目进行安装(install)
  • publish: 表示哪一类用户可以对匹配的项目进行发布(publish)
  • unpublish: 表示哪一类用户可以对匹配的项目进行删除(publish)
  • proxy: 对应于 uplinks 的名称,如果本地不存在,允许去对应的uplinks去取。
  • $all 表示所有人(已注册、未注册)都可以执行对应的操作
  • $authenticated 表示只有通过验证的人(已注册)可以执行对应操作,注意,任何人都可以去注册账户。
  • $anonymous 表示只有匿名者可以进行对应操作

比如配置权限的时候,我们把 npm 包的开发者设为可以发布,其他人设置为只能安装

如果觉得我的文章对你有用,请随意赞赏