如何查看当前使用的是哪个 .npmrc 文件

Jam*_*ber 7 node.js npm yarnpkg .npmrc

我的 npm 包和安装遇到了非常奇怪的问题。

error Couldn't find package "@date-io/core" on the "npm" registry.
Run Code Online (Sandbox Code Playgroud)

然而,使用 npm 安装不会产生任何错误,但我需要通过 yarn 安装许多项目设置和脚本。

那么,是否可以查看我的项目中当前正在使用哪个 .npmrc?

JΛY*_*ÐΞV 9


\n

编辑:

\n
2022 年 - 3 月 20 日 - 20:44(太平洋标准时间)
\n
\n

\xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 “如果您尚未阅读下面的原始答案,则此编辑可能没有多大意义。”

\n
\n

此答案不适用于早于Node v14.0.0解决方案适用于:) ^14.0.0之前的 Node.js 版本。@jonSakas 在评论中指出了这一点,他很有洞察力,知道 NPM CLI 的publish命令在使用以下标志运行时--dry-run --verbose如下所示:

\n

npm publish --dry-run --verbose

\n

...不打印系统.npmrc文件的位置。

\n
\n
编辑结束
\n
\n
\n
\n

NPMRC 文件位置:内容和位置

\n

\xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 NPM 配置文件可以并且将会存在于正在开发 Node 项目的任何给定环境中的不同级别。据我了解,具体分为三个级别,分别是:

\n
    \n
  1. 内置npmrc文件
    \n
  2. \n
  3. 全局npmrc文件
    \n
  4. \n
  5. 用户的.npmrc文件。
    \n
  6. \n
\n
\n
\n
\n

可能没有必要知道全局 NPM 配置文件在哪里。

\n

\xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0有几个可以让你找出.npmrc你正在使用的文件所在的位置,但你不需要这样做。对于您拥有的任何项目,请将 .npmrc 文件粘贴在根目录中,紧邻${rootDir}/node_modules/${rootDir}/package.json。项目级别 .npmrc将覆盖任何其他正在更改项目的 NPM 文件。不过,我从未让 NPM 更改过项目,除非我更改了配置文件,这意味着我知道该文件及其位置。如果由于某种原因,您仍然需要找到一个.npmrc,并且更改项目级别.npmrc文档对您没有帮助,您可能不想使用 的原始版本npm config edit,因为这只会配置项目级别的 npm 文档,而我我认为如果没有的话它会创建一个,所以它本质上是按照我所在的切线开始时所建议的方式进行的。

\n
\xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0相反,将 -g 放入命令中,这样你就可以打开全局.npmrc配置文件,就像这样......
\n
\n

npm config -g edit

\n
\n

我才恍然大悟,实际上您还有另一种方法可以查看哪些配置文件处于活动状态。我认为这种方式可以向您显示 npm 查看的文件路径,以查看那里是否有 NPM 文件。

\n

输入以下内容...

\n

npm publish --dry-run --verbose

\n
如果没有要发布的包,或者您有要发布的包,但尚未准备好发布,请不要担心。我选择发布试运行命令,因为它假设不进行任何更改。当没有包存在时,它不会工作,但它仍然会打印您想要的日志信息。当我这样做时,它打印了以下内容。
\n
jayd3v@jayd3v-XPS-8910:~$ npm publish --dry-run --verbose\nnpm verb cli [\nnpm verb cli   '/home/jayd3v/.nvm/versions/node/v17.6.0/bin/node',\nnpm verb cli   '/home/jayd3v/.nvm/versions/node/v17.6.0/bin/npm',\nnpm verb cli   'publish',\nnpm verb cli   '--dry-run',\nnpm verb cli   '--verbose'\nnpm verb cli ]\nnpm info using npm@8.5.2\nnpm info using node@v17.6.0\nnpm timing npm:load:whichnode Completed in 1ms\nnpm timing config:load:defaults Completed in 1ms\nnpm timing config:load:file:/home/jayd3v/.nvm/versions/node/v17.6.0/lib/node_modules/npm/npmrc Completed in 0ms\nnpm timing config:load:builtin Completed in 1ms\nnpm timing config:load:cli Completed in 1ms\nnpm timing config:load:env Completed in 0ms\nnpm timing config:load:project Completed in 2ms\nnpm timing config:load:file:/home/jayd3v/.npmrc Completed in 1ms\nnpm timing config:load:user Completed in 1ms\nnpm timing config:load:file:/home/jayd3v/.nvm/versions/node/v17.6.0/etc/npmrc Completed in 0ms\nnpm timing config:load:global Completed in 0ms\nnpm timing config:load:validate Completed in 0ms\nnpm timing config:load:credentials Completed in 0ms\nnpm timing config:load:setEnvs Completed in 1ms\nnpm timing config:load Completed in 8ms\nnpm timing npm:load:configload Completed in 8ms\nnpm timing npm:load:setTitle Completed in 0ms\nnpm timing config:load:flatten Completed in 2ms\nnpm timing npm:load:display Completed in 6ms\nnpm verb logfile /home/jayd3v/.npm/_logs/2022-03-01T22_15_38_103Z-debug-0.log\nnpm timing npm:load:logFile Completed in 3ms\nnpm timing npm:load:timers Completed in 0ms\nnpm timing npm:load:configScope Completed in 0ms\nnpm timing npm:load Completed in 19ms\nnpm verb publish [ '.' ]\n
Run Code Online (Sandbox Code Playgroud)\n
\n

您可以看到它向我显示了它尝试从中提取配置文件(“.npmrc”)的三个区域。它甚至命名了哪个是哪个

\n
\n
\n

内置npmrc

\n
npm timing config:load:file:/home/jayd3v/.nvm/versions/node/v17.6.0/lib/node_modules/npm/npmrc Completed in 0ms\nnpm timing config:load:builtin Completed in 1ms\n
Run Code Online (Sandbox Code Playgroud)\n
\n
\n

用户.npmrc

\n
npm timing config:load:file:/home/jayd3v/.npmrc Completed in 1ms\nnpm timing config:load:user Completed in 1ms\n
Run Code Online (Sandbox Code Playgroud)\n
\n
\n

全球的npmrc

\n
npm timing config:load:file:/home/jayd3v/.nvm/versions/node/v17.6.0/etc/npmrc Completed in 0ms\nnpm timing config:load:global Completed in 0ms\n
Run Code Online (Sandbox Code Playgroud)\n
\n
\n
\n


小智 3

正如@cbr指出的,您可以使用以下命令编辑配置:

npm config edit
Run Code Online (Sandbox Code Playgroud)

您还可以检查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)

这里