npmrc
測試 nrm、npmrc 的優先級
實驗
1. 沒有設置 nrm。
默認設置 registry 為 https://registry.npmjs.org/
下載的所有包都是通過以上域名獲取。
2. nrm use yarn。
設置 registry 為 https://registry.yarnpkg.com/。
看源碼可知實際做的事情是
npm.commands.config(['set', 'registry', registry.registry], function (err, data) {
if (err) return exit(err);
console.log(' ');
var newR = npm.config.get('registry');
printMsg([
'', ' Registry has been set to: ' + newR, ''
]);
})
即
npm set registry 'https://registry.yarnpkg.com/'
效果為
cat ~/.npmrc
registry=https://registry.yarnpkg.com/
安裝結果是從 registry.yarnpkg.com 里面下包。
3. 本地使用 npmrc。
當前項目操作
touch .npmrc
在 npmrc 里面填寫,
vim .npmrc
registry=https://registry.npm.taobao.org/
安裝結果是從 registry.npm.taobao.org 里面下包。
4. 使用本地 npmrc + nrm。
有本地 npmrc 的時候,執行
nrm ls
輸出的目錄是 npmrc 上設置的目錄。
5. 使用本地 npmrc + package-lock.json
這個分兩種情況。
-
直接執行
npm i
將從 package-lock 中獲取文件的下載地址。 -
如果執行的是
npm i <package>
將從 npmrc 中獲取下載地址,並更新 package-lock。
6. npm i chai –registry https://registry.yarnpkg.com/
效果與只使用
.npmrc
一致。
總結
.npmrc
的配置文件與
package-lock.json
的配置文件優先級是比較高的。
其次才是 nrm 的配置項。
nrm
其實是設置了 global 的 npmrc。項目下的 npmrc 肯定優先級更高一些。