【发布时间】:2016-03-29 08:05:01
【问题描述】:
我决定尝试使用 npm 脚本作为构建工具,到目前为止我很喜欢它。我想解决的一个问题是,当运行脚本以运行 jshint 时,当某些东西没有通过 linting 时,我得到了大量的“npm ERR!”。线。我想抑制这些,因为 linter 的输出更有意义。
有没有一种全局设置的好方法,有没有办法为每个脚本运行设置它?
【问题讨论】:
我决定尝试使用 npm 脚本作为构建工具,到目前为止我很喜欢它。我想解决的一个问题是,当运行脚本以运行 jshint 时,当某些东西没有通过 linting 时,我得到了大量的“npm ERR!”。线。我想抑制这些,因为 linter 的输出更有意义。
有没有一种全局设置的好方法,有没有办法为每个脚本运行设置它?
【问题讨论】:
您可以通过以下几种方式将日志级别设置为silent 来整体抑制 npm 的输出来解决此问题:
在每个npm run 调用上:
npm run --silent <your-script>
或通过以下方式在全局范围内创建.npmrc 文件(此文件可以在您的项目目录或主文件夹中):
loglevel=silent
资源:
npm 日志级别配置:https://docs.npmjs.com/misc/config#loglevel
npmrc:https://docs.npmjs.com/misc/config#loglevel
在某些脚本(如 linting)上,我用来解决此问题的一个简单技巧是在此类脚本的末尾附加 || true。这将在没有任何 npm 配置更改的情况下工作。
这将确保脚本始终以0 状态退出。这会诱使 npm 认为脚本成功,从而隐藏 ERR 消息。如果你想更明确,你可以追加|| exit 0,它应该会达到相同的结果。
{
"scripts": {
"lint": "jshint || true",
}
}
【讨论】:
|| true;这不是一个好的解决方案。我不想使用.npmrc 使所有其他命令静音。并且一直使用-s 运行这个特定的脚本似乎也很愚蠢。有没有人找到更好的解决方案来使单个脚本静音?
您应该能够同时使用--quiet 和--silent 选项,如
npm install --quiet
--quiet 将显示标准错误和警告,--silent 应该抑制几乎所有内容
您也可以将 stdout/stderr 发送到 /dev/null,如下所示:
npm install > "/dev/null" 2>&1
或更少的冗长
npm install &> /dev/null
【讨论】:
--quiet 适用于 npm 脚本 ;) @hackel
npm install --quiet --no-progress
将保留警告和错误,并在支持它的终端上抑制 ADHD 进度条。
【讨论】:
--quiet 似乎根本不适合我。 --silent 有效,但仍然显示烦人的进度条。 --no-progress 不隐藏进度条。这适用于 npm 7.21.1。
对于您希望保持静默而不必每次都添加--silent 的单个脚本,您可以创建一个新脚本来调用您之前的脚本并添加--silent。
我在 package.json 中的示例脚本:
"dev-loud": "npm run build && nodemon -r dotenv/config dist/index.js",
"dev": "npm run dev-loud --silent"
【讨论】:
"release:message": "echo '\n some long \n multiline message'",否则会被重复打印 ?
您可以通过删除事件侦听器在脚本中执行此操作
#!/usr/bin/env node
process.removeAllListeners('warning');
// Do your thang without triggering warnings
【讨论】: