运行 `npm install` 时是不是可以覆盖本地 .npmrc?

Posted

技术标签:

【中文标题】运行 `npm install` 时是不是可以覆盖本地 .npmrc?【英文标题】:Is it possible to override a local .npmrc when running `npm install`?运行 `npm install` 时是否可以覆盖本地 .npmrc? 【发布时间】:2017-01-08 18:31:57 【问题描述】:

我的项目在其根目录中有一个 .npmrc,其中包含臭名昭著的 $NPM_TOKEN hack,是 CI、Staging、生产等所必需的。

为了解决这个问题,我希望开发人员能够告诉npm 在安装依赖项时使用包含他们的 _authToken 的替代.npmrc。比如npm install . --npmrc=~/.npmrc。这将防止他们不得不污染系统的环境变量、.bash_profile 等。

目前可以吗? (似乎不是这样……)如果不是,有什么理由说明这种方法要么不可能(极不可能),要么 NPM 团队不会考虑?

【问题讨论】:

【参考方案1】:

幸运的是,this option already exists 可以这样使用:

npm install . --userconfig=~/.npmrc

【讨论】:

这将设置用户特定的配置,仍然会被本地项目特定的 .npmrc 覆盖,不是吗? 这个配置只是改变了用户特定的 npm 配置文件应该被找到的位置而不是优先级至少我是这么认为的。请让我们知道它是否有效 这似乎不起作用。当我从具有$PROJECT/.npmrc 的项目中运行npm --userconfig=~/.npmrc whoami 时,它仍然显示来自项目的用户名,而不是我的用户配置。 我为此提出了一个新问题,在这里:***.com/q/57045297/71522【参考方案2】:

我有类似的问题,我的解决方案是将项目级别 .npmrc 重命名为 .npmrc-ci 之类的名称,这样它就不会与本地环境混淆,而在 ci 脚本中添加 mv .npmrc-ci .npmrc 在运行任何 npm 之前命令。

【讨论】:

以上是关于运行 `npm install` 时是不是可以覆盖本地 .npmrc?的主要内容,如果未能解决你的问题,请参考以下文章

运行 npm install cordova 时 npm install 不起作用

npm install使用^ dependency而不是完全匹配

如何在没有 npm install 的情况下从 github 运行 react 项目

当我运行`npm install`时,它返回`ERR!代码 EINTEGRITY` (npm 5.3.0)

在 Jenkins 中:如何运行 NPM install 、 npm run 和 Npm run 代理

当我运行“npm install”时,我遇到了我不明白的 npm 问题