如何查看当前正在使用哪个 .npmrc 文件

问题描述 投票:0回答:3

我遇到了 npm 和我用 npm 安装的软件包的问题。然而,当我安装包

"@date-io/core"
使用
npm
包管理器
— 一切都按预期工作;当我使用 yarn 作为包管理器安装相同的包时,会发生错误并打印以下消息:

error couldn't find package "@date-io/core" on the "npm" registry.

我怀疑发生这种情况是由于 npm 用于从

.npmrc
文件获取配置的范围层次结构所致。我需要找出安装包时使用的 .npmrc 文件的位置,但我不知道如何找到。

有谁知道是否可以获取

npm
对于任何给定的 npm 命令使用的 .npmrc 的位置? 例如,如果我执行
npm install some-package
,无论我从哪里执行命令,有没有办法知道npm使用什么
.npmrc
文件来配置自身?

node.js npm configuration yarnpkg .npmrc
3个回答
10
投票

编辑:

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

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

此答案不适用于

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

npm publish --dry-run --verbose

...不打印系统

.npmrc
文件的位置。

编辑结束



NPMRC 文件位置:内容和位置

          NPM 配置文件可以并且将会存在于开发 Node 项目的任何给定环境中的不同级别。据我所知,具体分为三个级别,如下:

  1. 内置
    npmrc
    文件
  2. 全球
    npmrc
    文件
  3. 用户的
    .npmrc
    文件。



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

         有几种方法可以让您找出正在使用的

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

        相反,在命令中添加 -g,这样你就可以打开全局
.npmrc
配置文件,就像这样...

npm config -g edit

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

输入以下内容...

npm publish --dry-run --verbose

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

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



内置
npmrc

npm timing config:load:file:/home/jayd3v/.nvm/versions/node/v17.6.0/lib/node_modules/npm/npmrc Completed in 0ms
npm timing config:load:builtin Completed in 1ms


用户
.npmrc

npm timing config:load:file:/home/jayd3v/.npmrc Completed in 1ms
npm timing config:load:user Completed in 1ms


全球
npmrc

npm timing config:load:file:/home/jayd3v/.nvm/versions/node/v17.6.0/etc/npmrc Completed in 0ms
npm timing config:load:global Completed in 0ms




6
投票

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

npm config edit

您还可以根据文档检查这些路径的

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)

参见这里


0
投票

命令:

npm config ls -l

显示所有相关的 npm 配置参数,并指示其中哪些参数被哪些配置文件覆盖。考虑的所有配置文件都显示在此结果中。

只对配置文件位置本身感兴趣?

$ npm config ls -l | grep "config from"

产生具体列表:

; "default" config from default values
; "global" config from $PREFIX/etc/npmrc
; "user" config from $HOME/.npmrc
; "project" config from /path/to/my/project/.npmrc
; "cli" config from command line options

在配置的 NPM 文档中,给出了相关 npmrc 文件的概述。

© www.soinside.com 2019 - 2024. All rights reserved.