使用nexus3部署私有npm源

nrm(npm registry manager )npm的鏡像源管理工具,有時候國外資源太慢,使用這個就可以快速地在 npm 源間切換

 

  • 安裝:npm i -g nrm

  • 查看鏡像源:nrm ls

  • 增加鏡像源:nrm add <name> <url>

  • 刪除鏡像源:nrm del <name>

  • 使用鏡像源:nrm use <name>

  • 查看當前鏡像:nrm current

 

nrm坑

如果是windows,安裝完後,使用nrm可能會報以下錯誤

internal/validators.js:125
    throw new ERR_INVALID_ARG_TYPE(name, 'string', value);
    ^
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received 
type undefined

解決:找到C:\Users\Administrator\AppData\Roaming\npm\node_modules\nrm\cli.js17

// const NRMRC = path.join(process.env.HOME, '.nrmrc');
// 上面這句修改爲
const NRMRC = path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], '.nrmrc');

部署私有npm鏡像

環境:windows(64位)

1. 安裝nexus3

2. 開啓服務

解壓後,進入nexus-3.16.1-02\bin目錄,在命令cmd窗口執行nexus.exe /run
打開瀏覽器http://localhost:8081/

3. 登錄

點擊sign in,賬號默認:admin/admin123

4. 創建存儲空間

5. 創建倉庫

可以看到npm倉庫有三種類型:

  • hosted:私有倉庫,用於發佈個人開發或公司私有的npm組件
  • proxy:代理倉庫,可以代理npm和淘寶鏡像
  • group:組合倉庫,對外公開的倉庫,集合了hosted和proxy

創建私有倉庫

創建代理倉庫

創建組合倉庫

把剛增加的倉庫,加入組合倉庫成員中,成員中越靠上,倉庫的優先級越高,也就是private-npm > proxy-npm,會優先找私有倉庫的npm包,如果沒有,纔會找代理倉庫的

6. 創建用戶,設置權限

創建用戶

設置權限,用於發佈npm包

到這一步,nexus就設置好了,下面是使用

7. 使用

  1. 將組合倉庫group-npm的地址拷貝出來

  1. 將npm源設置爲拷貝出來的地址,比如這裏是http://localhost:8081/repository/group-npm/
    設置npm源:npm config set registry http://localhost:8081/repository/group-npm/

  2. 開發私有包並測試

  • 開發私有npm
    開發一個npm包的過程其實還比較複雜,這裏爲了測試簡化了,本地創建一個測試的npm包,新建一個文件夾test-npm,進入此目錄後,初始化項目npm init -y,創建一個index.js
  • 將這個包鏈接到本地全局npm包
    cd test-npm
    npm link
  • 本地測試此包有沒有毛病,在要用到此包的地方使用npm link test-npm來鏈接,此時,test-npm就會被創建到node_modules
mkdir test
cd test
npm init -y
npm link test-npm

創建測試文件src/test.js

執行node test.js,可以看到輸出3

說明本地測試這個包沒毛病

  • 將全局軟鏈取消
cd test-npm
npm unlink
  1. 將私有包發佈到私有倉庫
  • 拷貝私有倉庫地址,這裏是:http://localhost:8081/repository/private-npm/

登錄私有倉庫
npm login -registry=http://localhost:8081/repository/private-npm/,然後輸入用戶名、密碼、郵箱

發佈
npm publish -registry=http://localhost:8081/repository/private-npm/

遠程查看,發佈是否成功:

本地測試
在剛剛 test項目裏,刪除掉 node_modules(當然你也可以新建一個項目來測試),因爲剛剛已經設置鏡像源爲組合倉庫了,所以這裏可以直接安裝包 npm i test-npm,看到包已經下載下來了,測試也沒問題,完美!

 

  1. 可以使用nrm將當前的私有庫,保存起來,方便以後切換倉庫源

nrm add mynpm http://localhost:8081/repository/group-npm/
nrm ls

可以看到,帶*號的就是當前在用的

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章