公司里一般都有自己的私服,用于管理封裝的工具插件等象泵,Nexus2主要是用于maven/gralde倉庫的統(tǒng)一管理歼争,Nexus3則添加了npm插件,可以對npm提供支持考抄,其實用于npm倉庫管理的還有一個工具sinopia,可惜的是早已停止更新蔗彤。
下載安裝
在官網(wǎng)下載Nexus Repository Manager OSS 3.x, 解壓至任意位置.
-
管理員運行cmd, 切換到 nexus-3.15.2-01/bin 目錄
nexus.exe /install
進行安裝, 成功后會提示Installed service 'nexus
nexus.exe /run
運行服務(wù), 第一次要耐心等待很久 等待啟動完畢后, 進入
http://127.0.0.1:8081
, 點擊右上角Sign In
登陸, 默認賬號: admin 密碼: admin123如果提示
could not open SCManager
是因為沒有使用管理員身份啟動cmd
添加npm倉庫
-
點擊在左側(cè)菜單Repositories川梅,可以看到倉庫類型列表,如下:
image.png
npm(group)表示分組然遏,npm(hosted)表示本機私有贫途,npm(proxy)表示遠程代理。
若registry配置為group(包括hosted和proxy)待侵,首先會從hosted取丢早,若無則從proxy取并緩存,下次則會從緩存取秧倾。 點擊Create repository按鈕創(chuàng)建倉庫
-
選擇
npm(proxy)
, 輸入 Name: npm-proxy, remote storage 填寫 https://registry.npm.taobao.org 或 https://registry.npmjs.org. 用于將包情求代理到地址地址
image.png -
再次點擊Create repository按鈕., 增加 npm(hosted) 輸入 Name: npm-hosted 用于存放自己的私有包
image.png -
再次點擊Create repository按鈕.,增加npm(group) 輸入 Name: npm-all, 下面Member repositories里選擇之前添加的2個移動右邊
image.png
配置與驗證npm倉庫
- 查看并設(shè)置nodejs的默認倉庫地址
npm config get registry #http://registry.cnpmjs.org/
npm config set registry http://localhost:8081/repository/npm-group/
-
設(shè)置完成后那先,可以找到當(dāng)前用戶目錄下的.npmrc文件,內(nèi)容如下:
image.png - 隨便進入一個目錄, 初始化package, npm init -y, npm --loglevel info install jquery 查看是否從自己的倉庫地址拉取包
npm init -y
npm --loglevel info install jquery
#查看本地包的緩存地址(和私服無關(guān))命令
npm config get cache
從上圖中可以看到售淡,fetch地址即為私服地址斤葱。
查看剛搭建的私服里的內(nèi)容為空, 在安裝了依賴包后,就會有一些被緩存了揍堕,下次請求就不會走外網(wǎng)了汤纸。
發(fā)布包到私服
npm發(fā)布包是需要先登錄的衩茸,默認是登錄到npm官方服務(wù)器,若registry已更改為其它地址則可能登錄失敗贮泞,而這里我們只是想把包發(fā)布到自己私有的服務(wù)器上递瑰。
- 添加權(quán)限認證
設(shè)置權(quán)限, Realms 菜單, 將 npm Bearer Token Realm 添加到右邊 - 創(chuàng)建nx-deploy角色
給角色賦于一個nx-repository-view-*-*-*
權(quán)限
image.png -
創(chuàng)建deployer 用戶,密碼也為 deployer,同時設(shè)定角色為nx-deploy
image.png - 客戶端的.npmrc配置
registry=http://127.0.0.1:8081/repository/npm-group/
email=deployer@skytech.com
always-auth=true
_auth="ZGVwbG95ZXI6ZGVwbG95ZXI="
_auth是 username:password 的base64值抖部,這樣設(shè)置的好處是publish時就不用login了说贝。
- 發(fā)布控件到npm私服中
在package.json 配置
"publishConfig" : {
"registry" : "http://localhost:8081/repository/npm-hosted/"
}
在包根目錄執(zhí)行npm publish
即可乡恕。
如下:
注意:發(fā)布是npm-hosted俯萎,不是npm-group.
若不想在package.json配置傲宜,也可以在命令行指定函卒,如下:
$ npm publish --registry=http://localhost:8081/repository/npm-hosted/
+ vue-hslider@1.0.0
Nexus3數(shù)據(jù)備份遷移
內(nèi)網(wǎng)環(huán)境下撇眯,很多包需要從外網(wǎng)移入,可以把相關(guān)包在外網(wǎng)安裝測試成功后熊榛,然后將緩存的包直接復(fù)制到內(nèi)網(wǎng)即可。
Linux
倉庫遷移
Nexus的構(gòu)件倉庫都保存在sonatype-work目錄中血筑,該目錄的位置由nexus/conf/nexus.properties配置文件指定煎楣。
倉庫遷移需要兩個過程:備份和還原備份倉庫
將sonatype-work文件夾整體備份即可,也可以選擇只備份最重要的兩個文件夾索引(indexer)和倉庫(storage)還原倉庫
將備份好的sonatype-work文件拷貝到新的服務(wù)器中择懂。然后修改nexus/conf/nexus.properties配置文件,重新指定倉庫的目錄沸枯。
Windows
倉庫遷移
Nexus的構(gòu)件倉庫都保存在sonatype-work目錄中赂弓,該目錄的位置由bin/nexus.vmoptions配置文件指定(Dkaraf.data)。
倉庫遷移需要兩個過程:備份和還原備份倉庫
將sonatype-work文件夾整體備份即可翔怎,也可以選擇只備份最重要的兩個文件夾索引(indexer)和倉庫(storage)還原倉庫
將備份好的sonatype-work文件拷貝到新的服務(wù)器中。然后修改bin/nexus.vmoptions配置文件赤套,重新指定倉庫的目錄。