默认情况下,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文件

08-17 08:21