找了一圈,目前可免费使用的方案 verdaccio 还算不错,本次安装用到的几个库 wget node、verdaccio、
pm2、nginx,已经安装过了就不用重复安装了
准备工作
安装 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
启动成功后,浏览器访问 http://ip
可以看到启动成功了
根据页面的提示,发布一个包试试。在自己电脑上新开一个终端,新建一个文件夹 npm_test
,执行 npm init -y
然后根据提示创建一个用户 npm adduser --registry ip
并且发布包 npm publish --registry ip
,发布成功之后再访问 http://ip
就可以看到包上传上去了
verdaccio 配置
配置 config.yaml 配置文件
在服务器上输入 verdaccio
,第一行 /root/.config/verdaccio/config.yaml
就是配置文件的位置
进入 /root/.config/verdaccio
目录,目录下有 config.yaml
、htpasswd
两个文件和 storage
文件夹。打开 config.yaml
文件
我们发布的包存放在 storage
文件夹,我们添加的用户在 htpasswd
文件。这里重点关注 packages
这个字段
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: npmjs
- access: 表示哪一类用户可以对匹配的项目进行安装(install)
- publish: 表示哪一类用户可以对匹配的项目进行发布(publish)
- unpublish: 表示哪一类用户可以对匹配的项目进行删除(publish)
- proxy: 对应于 uplinks 的名称,如果本地不存在,允许去对应的uplinks去取。
- $all 表示所有人(已注册、未注册)都可以执行对应的操作
- $authenticated 表示只有通过验证的人(已注册)可以执行对应操作,注意,任何人都可以去注册账户。
- $anonymous 表示只有匿名者可以进行对应操作
比如配置权限的时候,我们把 npm 包的开发者设为可以发布,其他人设置为只能安装