运行npm命令提示production配置警告 需用--omit=dev替代的排查方案
警告触发原因
这个警告是npm 8及以上版本的官方规则调整:原有的production配置项已被废弃,等价功能需要用--omit=dev实现。你在npm、npm.cmd启动脚本里搜不到相关内容是正常的,这个配置不是硬编码在启动脚本里,一般是存在于配置文件或者环境变量中。
快速定位配置来源
直接在终端执行以下命令,会列出所有npm生效配置以及对应加载来源:
npm config ls -l
在输出内容中找到production = true的条目,行尾会明确标注这个配置是从哪个位置读取的,常见的配置存放位置有这几类:
- 用户级配置文件:Windows路径为
C:\Users\<你的用户名>\.npmrc,macOS/Linux路径为~/.npmrc - 全局级配置文件:Windows路径为Node安装目录下的
etc/npmrc(默认是C:\Program Files\nodejs\etc\npmrc),macOS/Linux可以先执行npm prefix -g拿到全局安装前缀,对应路径为<全局前缀>/etc/npmrc - 项目级配置:执行npm命令的当前目录下的
.npmrc文件,或是项目package.json内的config字段 - 环境变量:检查系统/当前终端环境变量中是否存在
NPM_CONFIG_PRODUCTION,npm会自动读取NPM_CONFIG_前缀的环境变量作为运行配置,很多部署脚本、集成环境会默认添加这个变量。
修复方案
- 找到配置来源后,如果是
.npmrc文件内写了production=true,直接将该行替换为omit=dev即可,不需要默认跳过开发依赖的话直接删除该行也可以。 - 如果是环境变量里配置了
NPM_CONFIG_PRODUCTION=true,删除该环境变量,或是替换为NPM_CONFIG_OMIT=dev。 - 如果是手动执行命令时加了
--production参数,把参数替换为--omit=dev就不会再触发警告。 - 临时不想调整配置只想屏蔽警告的话,可以在执行npm命令时追加
--loglevel=error参数,只输出错误信息,但不建议长期全局关闭警告,容易遗漏其他重要的异常提示。
不要尝试通过修改npm、npm.cmd启动脚本的方式移除警告,后续npm版本更新后修改会被覆盖,也可能导致其他运行异常。
内容的提问来源于stack exchange,提问作者Christopher Walters
相关产品推荐
相关产品推荐

