Verdaccio 搭建私有 NPM

爲何須要搭建私有 npm

  • 私有的包只想在內部使用,還不想用 git+ssh 的方式,感受不夠優雅,而且還想能夠配置相應的權限
  • npm 上的包下載很慢,想把已經下載過的包緩存在服務器上,下次 下載時首先檢查更新,若是沒更新直接走緩存
  • 但願下載的時候,公共包走公共倉庫,私有包走內部服務器的私有倉庫

關於 Verdaccio

Verdaccio 是一個 Node.js建立的輕量的私有 npm proxy registry, forked 於 sinopia@1.4.0nginx

  • 與 yarn, npm 和 pnpm 100% 兼容
  • 提供 Docker 和 Kubernetes 支持,至關容易安裝和使用
  • 發佈的包是私有的而且訪問權限可配置
  • Verdaccio 按須要緩存全部相關項,並在當地或私有網絡下能夠加速安裝

安裝

環境

  1. Nodegit

    • verdaccio@3.x Node >= v6.12
    • verdaccio@4.x Node >= v8.x
  2. npm >=4.x 或者 yarnweb

    官方強烈推薦包管理器版本 > npm@5.x | yarn@1.x | pnpm@2.xnpm

  3. 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.yamlhtpasswd。這裏介紹兩個比較重要的配置項,其餘的能夠官網上查詢。

權限配置

通常團隊或者公司的私有項目,會採用不一樣的權限控制。

操做權限:

  • 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;
  }
}
複製代碼

寫在最後

  • 儘可能不要再使用 sinopia 了會有各類坑,具體能夠本身實驗。
  • 有問題能夠在 stackoverflow 上提問,官方維護者很是友好,回覆效率特別快。

原文連接

相關文章
相關標籤/搜索