如何在 bash 中抑制 npm WARN 已弃用的消息

Posted

技术标签:

【中文标题】如何在 bash 中抑制 npm WARN 已弃用的消息【英文标题】:How to suppress npm WARN deprecated messages in bash 【发布时间】:2016-11-11 21:52:04 【问题描述】:

我在 Linux Mint 18.0 中安装了多个版本的 node.js。我使用nvm 管理它们。由于项目依赖关系,我需要将版本 0.10 作为默认版本 (nvm use 0.10)。因此,每次我启动终端时,都会得到以下输出:

npm WARN deprecated This version of npm lacks support for important features,
npm WARN deprecated such as scoped packages, offered by the primary npm
npm WARN deprecated registry. Consider upgrading to at least npm@2, if not the
npm WARN deprecated latest stable version. To upgrade to npm@2, run:
npm WARN deprecated 
npm WARN deprecated   npm -g install npm@latest-2
npm WARN deprecated 
npm WARN deprecated To upgrade to the latest stable version, run:
npm WARN deprecated 
npm WARN deprecated   npm -g install npm@latest
npm WARN deprecated 
npm WARN deprecated (Depending on how Node.js was installed on your system, you
npm WARN deprecated may need to prefix the preceding commands with `sudo`, or if
npm WARN deprecated on Windows, run them from an Administrator prompt.)
npm WARN deprecated 
npm WARN deprecated If you're running the version of npm bundled with
npm WARN deprecated Node.js 0.10 LTS, be aware that the next version of 0.10 LTS
npm WARN deprecated will be bundled with a version of npm@2, which has some small
npm WARN deprecated backwards-incompatible changes made to `npm run-script` and
npm WARN deprecated semver behavior.

如何隐藏这些消息?

【问题讨论】:

【参考方案1】:

2021 年更新:

(我的问题不是npm WARN deprecated 消息,而是npm WARN npm 消息,但这仍然适用)

我在 Ubuntu 上使用npm v8,我也使用nvm v0.33.11。出于个人原因,我必须使用 node 14 而不是当前版本的节点 16。

我的解决方案是:

npm WARN npm npm does not support Node.js v14.4.0
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm cannot make any promises that npm will work with this version.
npm WARN npm You can find the latest version at https://nodejs.org/

在文件$HOME/.nvm/nvm.sh

in line ~ 2155 我改变了这个

   NVM_NPM_PREFIX="$(npm config --loglevel=warn get prefix)"

到这里

   NVM_NPM_PREFIX="$(npm config --loglevel=silent get prefix)"

此外(也许这是可选的),我还更改了$HOME/.nvm/.npmrc,我在其中添加了这一行

loglevel=silent

正如这篇 SO 帖子中的其他答案所建议的那样。

【讨论】:

【参考方案2】:

您可以通过删除事件侦听器在脚本中执行此操作

#!/usr/bin/env node

process.removeAllListeners('warning');

// Do your thang without triggering warnings

感谢 Sam Roberts:https://github.com/nodejs/node/issues/32876#issuecomment-616709931

【讨论】:

【参考方案3】:

您还可以在项目、用户目录或全局中添加 .npmrc 文件。 四个相关文件是:

每个项目的配置文件 (/path/to/my/project/.npmrc) 每用户配置文件 (~/.npmrc) 全局配置文件 ($PREFIX/etc/npmrc) npm 内置配置文件 (/path/to/npm/npmrc)

例子:

prefix=~/.npm-global
loglevel=error

更多信息here

【讨论】:

【参考方案4】:

您可以通过环境变量抑制或静默 NPM:

npm_config_loglevel=silent npm version

这应该在您的.bashrc(或您调用nvm 的任何地方)中起作用:

npm_config_loglevel=silent nvm use 0.10

或者你可以全局设置环境变量

export npm_config_loglevel=silent

可以找到不同的日志级别 here - 它们是:

“沉默”、“错误”、“警告”、“http”、“信息”、“详细”、“愚蠢”

【讨论】:

谢谢,成功了。有趣的是:export npm_config_loglevel=silent 有效。 export NPM_CONFIG_LOGLEVEL=silent 没有。通常,我的环境变量是大写的。你知道为什么它不适用于这个吗? @AlexPopov 我同意这也不是我所期望的。环境变量区分大小写,因此由 npm 维护者决定。 npm_config_loglevel=silent nvm use 0.10 添加到我的 .bash_profile 不起作用。

以上是关于如何在 bash 中抑制 npm WARN 已弃用的消息的主要内容,如果未能解决你的问题,请参考以下文章

npm WARN 已弃用 lodash@2.4.2: lodash@<3.0.0 不再维护

npm WARN 已弃用 node-uuid@1.4.8:改用 uuid 模块

如何在 grunt shell 中抑制信息消息“io.bytes.per.checksum 已弃用”

如何使用 Google Analytics 7.3 抑制日志记录?

Ruby - Digest::Digest 已弃用;使用摘要

抑制 Java 中不推荐使用的导入警告