默认情况下,npm将用户配置存储在~/.npmrc
中。我的用户配置中有很多东西,我不想干扰我的主项目,但我正在切换到需要不同配置的第二个项目,所以我只做了:npm config set userconfig C:\path\to\another\directory\.npmrc
。
令我惊讶的是,npm在我的现有用户配置中添加了一个新的条目userconfig
。这对我来说没有意义-似乎NPM需要知道用户配置在哪里才能找到它在哪里!
现在,npm忽略我放入新npmrc文件中的任何属性,只接受~/.npmrc
中的属性。更奇怪的是,~/.npmrc
包含一个userconfig头(以分号为前缀的行),指定我的新位置,但内容来自npm config list
。
例如,如果我在~/.npmrc
中将电子邮件设置为“[email protected]”,在新的npmrc中将电子邮件设置为“[email protected]”,则~/.npmrc
将报告如下:
; cli configs
user-agent = "npm/3.10.8 node/v6.9.1 win32 x64"
; userconfig C:\path\to\another\directory\.npmrc
(... other properties ...)
email = "[email protected]"
(... other properties ...)
userconfig = "C:\path\to\another\directory\.npmrc"
; builtin config undefined
; node bin location = C:\Program Files\nodejs\node.exe
; cwd = C:\
; HOME = C:\Users\MyUsername
; "npm config ls -l" to show all defaults.
这个值来自于
npm config list
,尽管有外观(我再次检查了新npmrc中的值肯定是“[email protected]”)。我认为这可能是npm中的一个bug,所以我将node/npm升级到了最新版本,但它的行为仍然是相同的。我使用
~/.npmrc
是不是错了,它应该如何工作? 最佳答案
从https://docs.npmjs.com/misc/config
NPMRC文件
四个相关文件是:
每个项目配置文件(/path/to/my/project/.npmrc)
每个用户配置文件(默认为$home/.npmrc;可通过cli配置
选项--userconfig或环境变量$npm_config_userconfig)
全局配置文件(默认为$prefix/etc/npmrc;可配置
via cli选项--globalconfig或环境变量
$NPM配置(全局配置)
NPM的内置配置文件(/path/to/npm/npmrc)
修复
调用类似于npm --userconfig /another/path/to/npmrc install
的命令,它将使用该命令而不是~/.npmrc文件