npm 抑制 deprecated 警告
Suppress npm WARN deprecated
messages in npm install
.
我们在给项目安装依赖的时候,经常出现 npm WARN deprecated
警告,介绍几种 npm
隐藏弃用警告的方法(教程也适用于 yarn
和 pnpm
等 Node.js 包管理器)
如果一个 npm 包的维护者强烈希望用户将他的包升级到一个新版本,或者维护者不再维护这个包,那么他就可能将他的包(部分版本或所有版本)标记为弃用(deprecate)
被标记为弃用的包在安装时会发出警告:
1 |
|
如果你的项目直接依赖那个包,你可能会升级那个包来避免出现警告;
但如果那个包被间接依赖,你通常什么也做不了,只能等待包维护者处理,出现这种情况,您可能会想要隐藏弃用警告
有这几种常见的方法来抑制 deprecated 警告:
- 设置 Log Level
- 优点:简单,而且可以直接对所有包生效
- 缺点:会同时隐藏项目中其他的警告,出错时不易调试
- 修改锁文件(lock-file)
- 优点:只隐藏弃用警告,而且可以指定隐藏哪个包的警告
- 缺点:需要项目有锁文件
设置 Log Level
方法一:一次性设置(只对本次安装生效)
使用 --loglevel=error
参数,如:
1 |
|
也可以使用环境变量 npm_config_loglevel=error
(需要注意,都是小写的),如:
1 |
|
方法二:对一个项目生效
编辑项目 rc(run-command) 文件 .npmrc
(也可能是 .yarnrc
,取决于你使用的 Node.js 包管理器)文件(如果不存在,可以新建),设置 loglevel
,例:
1 |
|
方法三:全局生效
编辑 ~/.bashrc
文件(不同 shell 的 rc 文件名可能不同,你可能需要自行搜索你的 shell 的 rc 文件,在此就不细说,cmd.exe 不支持)
添加一行 export
命令:
1 |
|
此方法重启 shell 才会生效
修改锁文件
首先需要确认你的项目是否开启了锁文件,查看项目 rc(run-command) 文件
.npmrc
(也可能是.yarnrc
,取决于你使用的 Node.js 包管理器)文件:1
package-lock=false
如果项目没有 rc 文件,或 package-lock 不为 false,则说明锁文件在项目中启用
如果出现了package-lock=false
,那么我们需要将false
改为true
运行一次
npm i
如果锁文件不存在/数据不全,此操作会自动补全锁文件的数据查找锁文件
不同 Node.js 包管理器锁文件名称也不一样,可参考:包管理器 锁文件 npm
package-lock.json
yarn
yarn.lock
pnpm
pnpm-lock.yaml
修改锁文件
搜索deprecate
关键字:
我们可以看到所有被标记为弃用的包
若要隐藏一个包的弃用警告,将包名下带有 deprecate 关键字的行移除即可(如果是json
格式,你可能还需要移除末尾逗号)