本文介紹如何使用 verdaccio
搭建私有npm倉庫,以及使用 docker
時如何對映到本地目錄,方便簡單對倉庫進行各種操作。系統環境是 Linux。
verdaccio
verdaccio
是一個開源的輕量的私有 npm proxy registry
(npm 代理資源庫),安裝使用都非常方便。
forked自 sinopia@1.4.0
。
安裝
使用 npm / yarn
進行全域性安裝
-
Node.js v12+
-
npm 4.x+ 或yarn
-
全域性安裝
npm install -g verdaccio yarn global add verdaccio
-
啟動
verdaccio 或者使用 pm2 start verdaccio
使用瀏覽器訪問web服務,埠號4873,
http://0.0.0.0:4873
,訪問成功就可以了。
使用 docker
映象安裝
-
安裝
docker
,略 -
在
docker
下安裝verdaccio
映象
使用如下命令即可:docker pull verdaccio/verdaccio
安裝映象成功:
-
執行
verdaccio
,使用docker
命令執行映象,建立verdaccio
容器// 名稱verdaccio, 埠 4873 docker run -it --name verdaccio -p 4873:4873 verdaccio/verdaccio
啟動容器成功:
啟動成功以後,實際上就可以在瀏覽器訪問了,http://0.0.0.0:4873
。
接下來先介紹幾個操作容器的docker
命令。 -
docker
操作容器的部分命令新建並啟動:docker run CONTAINER
啟動停止的容器:docker start CONTAINER_ID
檢視容器:docker container ls (docker ps)
停止容器:docker stop CONTAINER_ID
刪除容器:docker rm CONTAINER_ID -
對映本地目錄
首先,建立
/home/verdaccio
目錄,以下在該目錄下操作。
其次,建立conf
目錄,並新增verdaccio
的config.yaml
配置檔案。
接著處理對映目錄,一般有以下兩種方式:-
直接對映本地目錄,啟動
verdaccio
docker run -it --name verdaccio -p 4873:4873 -v /home/verdaccio/storage:/verdaccio/storage -v /home/verdaccio/conf:/verdaccio/conf -v /home/verdaccio/plugins:/verdaccio/plugins verdaccio/verdaccio
-v:容器目錄對映到本地目錄
-
或者使用
docker-compose
啟動
新增docker-compose.yml
檔案,使用docker-compose up
命令啟動version: '3' services: verdaccio: image: verdaccio/verdaccio container_name: "verdaccio" network--mode: "bridge" environment: - VERDACCIO_PORT=4873 ports: - "4873:4873" volumes: - "/home/verdaccio/storage:/verdaccio/storage" - "/home/verdaccio/conf:/verdaccio/conf" - "/home/verdaccio/plugins:/verdaccio/plugins" network_mode: "bridge"
注意: 本地目錄
/home/verdaccio/storage
需要設定許可權,不然會因為許可權問題而導致操作失敗。chown -R 10001:65533 /home/verdaccio/storage
本地目錄對映成功後,會簡化很多操作,比如:
在/home/verdaccio
目錄下會建立storage
目錄,如果釋出了包,則在此目錄下的data
中能找到對應的包資料夾,可以檢視所有上傳的npm包,此處也可以直接刪除該包;
也會在conf
對映到配置檔案,方便我們需要時修改配置資訊。 -
-
拷貝
verdaccio
配置檔案如果不想做本地目錄對映,也可以使用如下命令,拷貝出
verdaccio
映象的配置檔案。
docker cp
:在容器和本地檔案系統之間,拷貝檔案或資料夾。docker cp verdaccio:/verdaccio/conf/config.yaml /home
私有庫部署成功
verdaccio
安裝啟動成功後,就可以直接網路訪問。
當頁面出現下圖所示,就表示私有庫搭建成功,後續就可以進行私有包的釋出下載。
釋出一個包
有了私有庫以後,就可以在其上釋出 npm
包。
但初始化時需要先新增使用者,設定使用者名稱和密碼等,然後就可以直接發包了。
-
新增使用者
npm adduser --registry http://0.0.0.0:4873/
輸入使用者名稱、密碼和郵箱。
-
publish
當需要把某個專案釋出到私有庫時,直接
publish
。npm publish --registry http://0.0.0.0:4873/
釋出成功後,重新整理頁面,就能看到最新發布的包。
install
在專案目錄下增加 .npmrc
檔案,指定倉庫地址。
registry=http://0.0.0.0:4873/
使用 npm install 包名
,即可安裝私有包了。
verdaccio 配置檔案解讀
常用配置如下:
# 素有包的儲存路徑
storage: /verdaccio/storage/data
# 外掛的儲存路徑
plugins: /verdaccio/plugins
# 通過web訪問
web:
title: Verdaccio
# 賬號密碼檔案,初始不存在
auth:
htpasswd:
file: /verdaccio/storage/htpasswd
# max_users:1000
# 預設1000,允許使用者註冊數量。為-1時,不能通過 npm adduser 註冊,此時可以直接修改 file 檔案新增使用者。
# 本地不存在時,讀取倉庫的地址
uplinks:
npmjs:
url: https://registry.npmjs.org
# 對包的訪問操作許可權,可以匹配某個具體專案,也可以通配
# access 訪問下載;publish 釋出;unpublish 取消釋出;
# proxy 對應著uplinks名稱,本地不存在,去unplinks裡取
# $all 表示所有人都可以執行該操作
# $authenticated 已註冊賬戶可操作
# $anonymous 匿名使用者可操作
# 還可以明確指定 htpasswd 使用者表中的使用者,可以配置一個或多個。
packages:
'@*/*':
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: npmjs
'**':
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: npmjs
# 伺服器相關
sever:
keepAliveTimeout: 60
middlewares:
audit:
enabled: true
# 日誌設定
logs: { type: stdout, format: pretty, level: http }