最近想搭一个 npm 私服,找了一下网上的资料,发现了两个项目:html
sinopia 以前好像很火,可是做者弃坑了,从项目里的一个issue(见文末)发现,有人fork了一个项目,就是本文要使用的 verdaccio,目前该项目在积极维护中
cnpm 看起来虽然最近有commit,可是已经一年没有 release了,并且安装比较复杂node
最后选择了verdaccio。nginx
Verdaccio is a lightweight private npm proxy registry built in Node.js
$ sudo npm install -g verdaccio
笔者安装的是 verdaccio@3.2.0
,须要 node > 6.12.0
, npm >=3.x
git
咱们使用 pm2 来管理进程,须要全局安装 pm2github
若是 npm 安装失败可使用 yarnnpm
$ sudo npm install -g pm2
$ sudo pm2 start verdaccio
而后能够查看 进程启动状况centos
$ pm2 ls
因为 verdaccio 默认是启动在 4873 端口,方便起见,配置 nginx 反向代理到该端口
若是须要查看 verdaccio 的端口号,能够用 pm2 ls
查看到 verdaccio 的 pid,而后使用:bash
$ netstat -nap | grep <pid>
查看占用的端口号ui
下面贴出 nginx 配置,centos 的nginx 配置文件在 /etc/nginx/conf.d/
新建一个配置文件,而后使用以下内容便可url
server { listen 80; server_name registry.npm.your.server; location / { proxy_pass http://127.0.0.1:4873/; proxy_set_header Host $host; } }
重启 nginx
$ sudo nginx -s reload
访问:http://registry.npm.your.server
能够看到 verdaccio 已经安装完成。
而后就能够发布你的 npm 包了~
方便起见,能够在项目目录下新建 .npmrc
文件,写入以下内容:
registry=http://registry.npm.your.server
而后项目安装的包就会先从你本身的npm下载,若是找不到就会找官方npm源
因为 verdaccio 默认使用的是npm官方的源,你能够改为淘宝的源
他的配置文件在 /home/<username>/.config/verdaccio/config.yaml
其中有个 uplinks 字段
uplinks: npmjs: url: https://registry.npmjs.org/
将 url 改成 https://registry.npm.taobao.org/
便可