git+ssh
的方式,感受不夠優雅,而且還想能夠配置相應的權限Verdaccio 是一個 Node.js建立的輕量的私有 npm proxy registry, forked 於 sinopia@1.4.0
。nginx
Nodegit
Node >= v6.12
Node >= v8.x
npm >=4.x 或者 yarnweb
官方強烈推薦包管理器版本
> npm@5.x | yarn@1.x | pnpm@2.x
npm
web 應用支持瀏覽器 Chrome, Firefox, Edge 和 IE11以上
瀏覽器
npm
全局安裝緩存
npm install -g verdaccio
複製代碼
或者使用 yarn
服務器
yarn global add verdaccio
複製代碼
安裝好後須要命令行執行網絡
$> verdaccio
warn --- config file - /home/.config/verdaccio/config.yaml
warn --- http address - http://localhost:4873/ - verdaccio/3.0.0
複製代碼
而後打開瀏覽器 訪問地址 http://localhost:4873/ 正常顯示即成功, 4873是默認端口。 另外建議安裝 nrm
方便管理 npm 源。ssh
npm i -g nrm
複製代碼
安裝好後工具
nrm add verdaccio http://localhost:4873/ # 添加源
nrm use verdaccio # 更換源
複製代碼
而後就是添加用戶,登陸就能夠發佈、安裝了。
在當前用戶的 .config/verdaccio
下默認有兩個文件:config.yaml
和 htpasswd
。這裏介紹兩個比較重要的配置項,其餘的能夠官網上查詢。
通常團隊或者公司的私有項目,會採用不一樣的權限控制。
操做權限:
access
表示哪一類用戶能夠對匹配的項目進行安裝(install)publish
表示哪一類用戶能夠對匹配的項目進行發佈(publish)proxy
如其名,這裏的值是對應於 uplinks 的組權限:
$all
表示全部人均可以執行對應的操做$authenticated
表示只有經過驗證的人能夠執行對應操做$anonymous
表示只有匿名者能夠進行對應操做(一般無用)瞭解這幾項配置後就能很簡單地使用 verdaccio 的權限控制了
packages:
# scoped 包
'@scope/*':
access: $all
publish: $all
proxy: server2
'supersecret-*':
# 添加多個組
access: secret super-secret-area ultra-secret-area
publish: secret ultra-secret-area
proxy: server1
'private-*':
# private-xxx 容許全部的用戶安裝、認證的用戶發佈
access: $all
publish: $authenticated
proxy: uplink1
'old-*': # 不設置 `access`、`publish` 阻止對一組包的訪問(不設置proxy阻止代理一組特定包)
'**':
# 容許全部用戶 (包括爲驗證的用戶) 安裝和發佈
access: $all
publish: $all
proxy: uplink2
複製代碼
由於是私有源,咱們能夠設置 config.yaml
中的 max_users: -1
來禁用 npm adduser 命令來建立用戶。若是須要添加用戶這裏介紹兩種方法:
能夠經過安裝 htpasswd-for-sinopia 來添加帳號
$ npm install htpasswd-for-sinopia -g
$ sinopia-adduser # 在 htpasswd 目錄下執行
複製代碼
而後就是根據提示填寫帳號密碼就行。
verdaccio 的認證是基於 verdaccio-htpasswd, 能夠經過官方提供的工具來生成 www.htaccesstools.com/htpasswd-ge…,將生成的段字符串添加到 htpasswd
中便可。
可使用forever、pm2或其餘的守護進程進行管理。
$ npm i -g pm2 # 安裝
$ pm2 start `which sinopia` #啓動
複製代碼
nginx 配置:
server {
listen 80 default_server;
location / {
proxy_pass http://127.0.0.1:4873/;
proxy_set_header Host $host;
}
}
複製代碼