为什么无法获取npm userconfig?

Kid*_*rla 5 configuration node.js npm

默认情况下,NPM将用户配置存储在中~/.npmrc。我的用户配置中有很多东西,我不想干扰我的主项目,但是我切换到另一个需要不同配置的项目,所以我做到了:

npm config set userconfig C:\path\to\another\directory\.npmrc

令我惊讶的是,NPM在的userconfig现有用户配置中添加了一个新条目~/.npmrc。这对我来说没有意义-似乎NPM需要知道用户配置在哪里才能找出它在哪里!

现在,NPM会忽略我放入新NPMRC文件中的任何属性,而仅从中获取属性~/.npmrc。更奇怪的是,它npm config list包含一个userconfig标头(以分号为前缀的行)指定了我的新位置,但其内容来自~/.npmrc

例如,如果我~/.npmrc在新的NPMRC中将电子邮件设置为“ foo@example.com”,在新NPMRC 中将其设置为“ bar@example.com”,则会npm config list报告如下内容:

; cli configs
user-agent = "npm/3.10.8 node/v6.9.1 win32 x64"

; userconfig C:\path\to\another\directory\.npmrc
(... other properties ...)
email = "foo@example.com"
(... 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.
Run Code Online (Sandbox Code Playgroud)

该值来自~/.npmrc出现的外观(我仔细检查了新NPMRC中的值肯定是“ bar@example.com”)。

我以为这可能是NPM中的错误,所以我将Node / NPM升级到了最新版本,但是它的行为仍然相同。我使用的是userconfig错误的,应该如何工作?

Sha*_*moo 8

来自https://docs.npmjs.com/misc/config

npmrc 文件

四个相关文件是:

  • 每个项目的配置文件(/path/to/my/project/.npmrc
  • 每个用户的配置文件(默认为$HOME/.npmrc;通过 CLI 选项 --userconfig 或环境变量$NPM_CONFIG_USERCONFIG 配置
  • 全局配置文件(默认为$PREFIX/etc/npmrc;通过 CLI 选项--globalconfig或环境变量 $NPM_CONFIG_GLOBALCONFIG 配置
  • npm 的内置配置文件 ( /path/to/npm/npmrc )

使固定

调用类似的命令npm --userconfig /another/path/to/npmrc install,它将使用它而不是 ~/.npmrc 文件

  • 我更喜欢设置 $NPM_CONFIG_USERCONFIG 变量,因为这将反映该会话中的每个命令(或持久地)。使用 --userconfig 仅适用于该命令(尽管这可能是期望的) (4认同)