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.js
第17
行
// 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. 使用
-
將組合倉庫
group-npm
的地址拷貝出來
-
將npm源設置爲拷貝出來的地址,比如這裏是
http://localhost:8081/repository/group-npm/
設置npm源:npm config set registry http://localhost:8081/repository/group-npm/
-
開發私有包並測試
- 開發私有
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
- 將私有包發佈到私有倉庫
-
拷貝私有倉庫地址,這裏是:
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
,看到包已經下載下來了,測試也沒問題,完美!
-
可以使用
nrm
將當前的私有庫,保存起來,方便以後切換倉庫源
nrm add mynpm http://localhost:8081/repository/group-npm/
nrm ls
可以看到,帶*
號的就是當前在用的