公司里一般都有自己的私服,用於管理封裝的工具插件等,Nexus2主要是用於maven/gralde倉庫的統一管理,Nexus3則添加了npm插件,可以對npm提供支持,其實用於npm倉庫管理的還有一個工具sinopia,可惜的是早已停止更新。
下載安裝
-
在官網下載Nexus Repository Manager OSS 3.x, 解壓至任意位置.
-
管理員運行cmd, 切換到 nexus-3.15.2-01/bin 目錄
nexus.exe /install
進行安裝, 成功后會提示Installed service 'nexus
nexus.exe /run
運行服務, 第一次要耐心等待很久 -
等待啟動完畢后, 進入
http://127.0.0.1:8081
, 點擊右上角Sign In
登陸, 默認賬號: admin 密碼: admin123 -
如果提示
could not open SCManager
是因為沒有使用管理員身份啟動cmd
添加npm倉庫
-
點擊在左側菜單Repositories,可以看到倉庫類型列表,如下:
npm(group)表示分組,npm(hosted)表示本機私有,npm(proxy)表示遠程代理。
若registry配置為group(包括hosted和proxy),首先會從hosted取,若無則從proxy取並緩存,下次則會從緩存取。 -
點擊Create repository按鈕創建倉庫
-
選擇
npm(proxy)
, 輸入 Name: npm-proxy, remote storage 填寫 https://registry.npm.taobao.org 或 https://registry.npmjs.org. 用於將包情求代理到地址地址
-
再次點擊Create repository按鈕., 增加 npm(hosted) 輸入 Name: npm-hosted 用於存放自己的私有包
-
再次點擊Create repository按鈕.,增加npm(group) 輸入 Name: npm-all, 下面Member repositories里選擇之前添加的2個移動右邊
配置與驗證npm倉庫
- 查看並設置nodejs的默認倉庫地址
npm config get registry #http://registry.cnpmjs.org/ npm config set registry http://localhost:8081/repository/npm-group/
-
設置完成后,可以找到當前用戶目錄下的.npmrc文件,內容如下:
- 隨便進入一個目錄, 初始化package, npm init -y, npm --loglevel info install jquery 查看是否從自己的倉庫地址拉取包
npm init -y
npm --loglevel info install jquery
#查看本地包的緩存地址(和私服無關)命令 npm config get cache

從上圖中可以看到,fetch地址即為私服地址。
查看剛搭建的私服里的內容為空, 在安裝了依賴包后,就會有一些被緩存了,下次請求就不會走外網了。

發布包到私服
npm發布包是需要先登錄的,默認是登錄到npm官方服務器,若registry已更改為其它地址則可能登錄失敗,而這里我們只是想把包發布到自己私有的服務器上。
- 添加權限認證
設置權限, Realms 菜單, 將 npm Bearer Token Realm 添加到右邊 - 創建nx-deploy角色
給角色賦於一個nx-repository-view-*-*-*
權限
-
創建deployer 用戶,密碼也為 deployer,同時設定角色為nx-deploy
- 客戶端的.npmrc配置
registry=http://127.0.0.1:8081/repository/npm-group/ email=deployer@skytech.com always-auth=true _auth="ZGVwbG95ZXI6ZGVwbG95ZXI="
_auth是 username:password 的base64值,這樣設置的好處是publish時就不用login了。
- 發布控件到npm私服中
在package.json 配置
"publishConfig" : { "registry" : "http://localhost:8081/repository/npm-hosted/" }
在包根目錄執行npm publish
即可。
如下:

注意:發布是npm-hosted,不是npm-group.
若不想在package.json配置,也可以在命令行指定,如下:
$ npm publish --registry=http://localhost:8081/repository/npm-hosted/ + vue-hslider@1.0.0
Nexus3數據備份遷移
內網環境下,很多包需要從外網移入,可以把相關包在外網安裝測試成功后,然后將緩存的包直接復制到內網即可。
Linux
-
倉庫遷移
Nexus的構件倉庫都保存在sonatype-work目錄中,該目錄的位置由nexus/conf/nexus.properties配置文件指定。
倉庫遷移需要兩個過程:備份和還原 -
備份倉庫
將sonatype-work文件夾整體備份即可,也可以選擇只備份最重要的兩個文件夾索引(indexer)和倉庫(storage) -
還原倉庫
將備份好的sonatype-work文件拷貝到新的服務器中。然后修改nexus/conf/nexus.properties配置文件,重新指定倉庫的目錄。
Windows
-
倉庫遷移
Nexus的構件倉庫都保存在sonatype-work目錄中,該目錄的位置由bin/nexus.vmoptions配置文件指定(Dkaraf.data)。
倉庫遷移需要兩個過程:備份和還原 -
備份倉庫
將sonatype-work文件夾整體備份即可,也可以選擇只備份最重要的兩個文件夾索引(indexer)和倉庫(storage) -
還原倉庫
將備份好的sonatype-work文件拷貝到新的服務器中。然后修改bin/nexus.vmoptions配置文件,重新指定倉庫的目錄。
原文:https://www.jianshu.com/p/1674a6bc1c12