最近想搭一個 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/
便可