0x00 前言
最近想搭一個 npm 私服,找了一下網上的資料,發現了兩個專案:
sinopia 之前好像很火,但是作者棄坑了,從專案裡的一個issue(見文末)發現,有人fork了一個專案,就是本文要使用的 verdaccio,目前該專案在積極維護中
cnpm 看起來雖然最近有commit,但是已經一年沒有 release了,而且安裝比較複雜
最後選擇了verdaccio。
Verdaccio is a lightweight private npm proxy registry built in Node.js
0x01 安裝
全域性安裝
$ sudo npm install -g verdaccio
筆者安裝的是 verdaccio@3.2.0
,需要 node > 6.12.0
, npm >=3.x
我們使用 pm2 來管理程式,需要全域性安裝 pm2
如果 npm 安裝失敗可以使用 yarn
$ sudo npm install -g pm2
啟動 verdaccio
$ sudo pm2 start verdaccio
然後可以檢視 程式啟動情況
$ pm2 ls
配置nginx反向代理
由於 verdaccio 預設是啟動在 4873 埠,方便起見,配置 nginx 反向代理到該埠
如果需要檢視 verdaccio 的埠號,可以用 pm2 ls
檢視到 verdaccio 的 pid,然後使用:
$ netstat -nap | grep <pid>
檢視佔用的埠號
下面貼出 nginx 配置,centos 的nginx 配置檔案在 /etc/nginx/conf.d/
新建一個配置檔案,然後使用如下內容即可
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
0x02 使用
專案中配置
訪問:http://registry.npm.your.server
可以看到 verdaccio 已經安裝完成。
然後就可以釋出你的 npm 包了~
方便起見,可以在專案目錄下新建 .npmrc
檔案,寫入如下內容:
registry=http://registry.npm.your.server
然後專案安裝的包就會先從你自己的npm下載,如果找不到就會找官方npm源
修改上游npm源
由於 verdaccio 預設使用的是npm官方的源,你可以改成淘寶的源
他的配置檔案在 /home/<username>/.config/verdaccio/config.yaml
其中有個 uplinks 欄位
uplinks:
npmjs:
url: https://registry.npmjs.org/
將 url 改為 https://registry.npm.taobao.org/
即可