上海商城網(wǎng)站建設(shè)搜狐綜合小時(shí)報(bào)2022113011
文章目錄
- 1. 文章引言
- 2. 簡(jiǎn)述.npmrc
- 3. 配置.npmrc
- 3.1 .npmrc配置文件的優(yōu)先級(jí)
- 3.2 .npmrc設(shè)置的命令行
- 3.3 如何設(shè)置.npmrc
- 4. 配置發(fā)布組件
- 5. npm常用命令
- 6. 重要備注
- 6.1 yarn
- 6.2 scope命名空間
- 6.3 鏡像出錯(cuò)
1. 文章引言
今天在某低代碼平臺(tái)開發(fā)項(xiàng)目時(shí),看到如下編譯配置的彈出框:
注意紅框中的.npmrc
這個(gè)詞,它是什么意思呢,以及如何設(shè)置.npmrc
呢?
接下來(lái),我便詳細(xì)解說(shuō).npmrc
這個(gè)詞,以及如何設(shè)置.npmrc
。
2. 簡(jiǎn)述.npmrc
.npmrc
可以理解成npm running cnfiguration
,即npm
運(yùn)行時(shí)配置文件。
簡(jiǎn)單點(diǎn)說(shuō),.npmrc
可以設(shè)置package.json
中依賴包的安裝來(lái)源,即從哪里下載依賴包。
3. 配置.npmrc
3.1 .npmrc配置文件的優(yōu)先級(jí)
一般情況下,我們的電腦中有多個(gè).npmrc
文件,我們?cè)诎惭b包時(shí),npm
按照如下順序讀取這些配置文件:
-
項(xiàng)目配置文件:
/project/.npmrc
-
用戶配置文件:
~/.npmrc
我們可以通過(guò)如下命令,來(lái)獲取.npmrc用戶配置文件
路徑:
npm config get userconfig
如果想恢復(fù)默認(rèn)配置,只需要將用戶配置文件~/.npmrc
刪除即可。
- 全局配置文件:
$PREFIX/etc/npmrc
我們可以通過(guò)如下命令,來(lái)獲取.npmrc 全局配置文件
路徑$PREFIX
:
npm config get prefix
【注意】如果你不曾配置過(guò)全局文件,該文件不存在。
npm
內(nèi)置配置文件/path/to/npm/npmrc
我們可以通過(guò)如下命令,獲取npmrc
在npm
的路徑:
which npm
與npm
同級(jí)別, 使用which npm
獲取npm
的路徑。
3.2 .npmrc設(shè)置的命令行
在講解如何設(shè)置.npmrc
之前,我們需要了解設(shè)置文件的命令行。
我們一般使用key-value
的方式來(lái)設(shè)置文件,如下所示:
npm config set key value
例如,設(shè)置倉(cāng)庫(kù)信息,可以使用下述命令行:
npm config set registry https://repo.huaweicloud.com/repository/npm/
3.3 如何設(shè)置.npmrc
- 設(shè)置項(xiàng)目配置文件
項(xiàng)目下.npmrc
文件的優(yōu)先級(jí)最高,可以給每個(gè)項(xiàng)目配置不同的鏡像,項(xiàng)目之間的配置互不影響。
在項(xiàng)目的根目錄下新建.npmrc
文件,在里面以key=value
的格式進(jìn)行配置。
registry=https://registry.npm.taobao.org
也可以指定特殊的命名空間(scope)
的來(lái)源。
比如,以@testNpmRc
開頭的包從registry=https://npm.xx.com
這里下載,其余全去淘寶鏡像下載。
registry=https://registry.npm.taobao.org/
@testNpmRc:registry = https://npm.xx.com
- 設(shè)置用戶配置文件
可以直接通過(guò)如下命令:
npm config get userconfig
找到用戶配置文件的路徑,直接仿照上述方法修改該文件。
當(dāng)然,也可以通過(guò)npm config set
命令繼續(xù)設(shè)置,如下所示:
npm config set registry https://registry.npm.taobao.org
如果想要?jiǎng)h除一些配置,可以直接編輯.npmrc
文件,也可以使用命令進(jìn)行刪除,例如:
npm config delete registry
- 設(shè)置全局配置文件
方法同設(shè)置用戶配置文件一樣,只不過(guò)在使用命令行時(shí)需要加上-g
參數(shù),如下所示:
npm config set registry https://registry.npm.taobao.org -g
- 給
npm
命令添加注冊(cè)源選項(xiàng)
比如,臨時(shí)使用淘寶鏡像,如下所示:
npm --registry=https://registry.npm.taobao.org [npm命令]
又比如,使用npm
安裝依賴包,如下所示:
npm install --registry https://registry.npmjs.org
但不推薦用這種做法,更推薦設(shè)置項(xiàng)目配置文件.npmrc
。
4. 配置發(fā)布組件
npm
配置組件發(fā)布的方式有如下兩種:
-
通過(guò)配置
packege.json
實(shí)現(xiàn) -
通過(guò)配置文件
.npmrc
實(shí)現(xiàn)
package.json
配置方式
# @aa是組件的scope。
# scope在模塊名name中使用時(shí),以@開頭,后邊跟一個(gè)/
{"name": "@aa/xxx", // 發(fā)布npm包的名字"version": "1.0.0", // 你的npm包版本"description": "xxxx", // 包的描述"main": "dist/btn.js", // 指定組件的主入口文件"publishConfig": {"registry": "要發(fā)布的私有倉(cāng)庫(kù)地址,然后在.npmrc配置用戶名密碼"}......
}
.npmrc
配置方式
# package.json不做任何倉(cāng)庫(kù)的配置:
{"name": "@aa/xxx", // 發(fā)布npm包的名字"version": "1.0.0", // 你的npm包版本"description": "xxxx", // 包的描述"main": "dist/btn.js", // 指定組件的主入口文件......
}# .npmrc配置倉(cāng)庫(kù)地址和用戶名密碼:
@aa:registry=私倉(cāng)地址
配置好倉(cāng)庫(kù)信息后,執(zhí)行如下發(fā)布命令,即可將打包好的組件發(fā)布到倉(cāng)庫(kù)中:
npm publish
5. npm常用命令
npm config set <key> <value> [-g|--global] //給配置參數(shù)key設(shè)置值為value;
npm config get <key> //獲取配置參數(shù)key的值;
npm config delete <key> [-g|--global] //刪除置參數(shù)key及其值;
npm config list [-l] //顯示npm的所有配置參數(shù)的信息;
npm config edit //編輯用戶配置文件
npm get <key> //獲取配置參數(shù) key 生效的值;
npm set <key> <value> [-g|--global] //給配置參數(shù)key設(shè)置值為value;
6. 重要備注
6.1 yarn
yarn
會(huì)讀取.npmrc
的配置文件,所以不必為yarn
再設(shè)置一次。
6.2 scope命名空間
上文提到的指定特殊的命名空間(scope)
的來(lái)源,如下代碼所示:
@aa:registry=https://repo.huaweicloud.com/repository/npm/
其中,@aa
是組件的scope
,scope
在模塊名name
中使用時(shí),以@
開頭,比如:
# 在package.json的dependencies標(biāo)簽中加上即可使用。
"dependencies": {"@test/mypackage": "^1.3.0"
}
6.3 鏡像出錯(cuò)
.npmrc
文件配置了私有包registry
源,但是當(dāng)前的下載源是淘寶鏡像,可能會(huì)報(bào)如下錯(cuò)誤:
error Command failed with exit code 1
可以將當(dāng)前的下載源改成私有包registry
源,如果改了之后還報(bào)錯(cuò),可以嘗試將lock
文件,或者node_modules
文件刪掉,重新開始下載。