Node.js 如何在运行npm脚本时抑制输出
我已经决定尝试使用npm脚本作为构建工具,到目前为止我很喜欢它。我想解决的一个问题是,当运行一个脚本来运行jshint时,当某些东西没有通过linting时,我会得到大量的“npm ERR!”行。我想抑制这些,因为linter的输出更有意义 是否有一种全局设置的好方法,以及是否有一种为每次脚本运行设置的方法?所有脚本: 您可以通过以下两种方式将日志级别设置为Node.js 如何在运行npm脚本时抑制输出,node.js,npm,Node.js,Npm,我已经决定尝试使用npm脚本作为构建工具,到目前为止我很喜欢它。我想解决的一个问题是,当运行一个脚本来运行jshint时,当某些东西没有通过linting时,我会得到大量的“npm ERR!”行。我想抑制这些,因为linter的输出更有意义 是否有一种全局设置的好方法,以及是否有一种为每次脚本运行设置的方法?所有脚本: 您可以通过以下两种方式将日志级别设置为silent,通过整体抑制npm的输出来解决此问题: 在每次npm运行时调用: npm run --silent <your-scri
silent
,通过整体抑制npm的输出来解决此问题:
在每次npm运行时
调用:
npm run --silent <your-script>
资源:
npm日志级别配置:
npmrc:
每个脚本分别:
在某些脚本(如linting)上,我使用了一个简单的技巧来解决这个问题,即在这些脚本的末尾附加| | true
。这将在没有任何npm配置更改的情况下工作
这将确保脚本始终以0
状态退出。这会诱使npm认为脚本成功,从而隐藏ERR
消息。如果您想更加明确,可以附加| | exit 0
,它应该会得到相同的结果
{
"scripts": {
"lint": "jshint || true",
}
}
您应该能够同时使用
--quiet
和--silent
选项,如中所示
npm install --quiet
--silent
将显示stderr和警告,--silent
将几乎抑制所有内容
您还可以将stdout/stderr发送到/dev/null
,如下所示:
npm install > "/dev/null" 2>&1
或者说不那么老练
npm install &> /dev/null
将保留警告和错误,并在支持它的终端上抑制ADHD进度条。您可以通过删除事件侦听器在脚本中执行此操作
#!/usr/bin/env node
process.removeAllListeners('warning');
// Do your thang without triggering warnings
对于要保持静默而不必每次添加
--silent
的单个脚本,您可以创建一个调用上一个脚本并添加--silent
的新脚本
package.json中的示例脚本:
"dev-loud": "npm run build && nodemon -r dotenv/config dist/index.js",
"dev": "npm run dev-loud --silent"
||如果您试图将参数附加到npm运行的末尾(例如npm run myCmd)--则true不起作用。这真是太荒谬了(不怪您)。我不想附加
| | true
;这不是一个好的解决办法。我不想使用.npmrc
使所有其他命令静音。一直用-s
运行这个特定的脚本也显得非常愚蠢。有没有人找到一个更好的解决方案来让一个脚本静音?如果其他人遇到这个问题,这是一个悬而未决的问题-请参阅.loglevel=silent对我来说似乎有些过分了。这甚至会使错误消息保持沉默(尽管它们仍然会被写入本地文件)。根据这一建议后不久的链接,可能的日志级别按优先级顺序为:“静默”、“错误”、“警告”、“通知”、“http”、“计时”、“信息”、“详细”、“愚蠢”。我建议使用“错误”(这将抑制警告,但显示错误)或“警告”(这将包括警告)。npm通常没有理由向我们展示它如何决定运行什么,这是它默认的做法。这感觉像是调试文本。好的,我需要纠正自己,并提出异议。也许它甚至是一个node.js错误?当我创建了一个带有“loglevel=error”的.npmrc文件时,运行“npm test”仍然通过npm的逻辑跟踪它是如何确定要运行的命令行的。Node version 8.12.0,npm version 5.8.0。可能的副本关于此主题的一个问题是:在Windows中,它是npm安装--quiet>num此问题专门关于运行npm脚本。--quiet
适用于npm脚本;)@Hackelth这个问题是关于运行npm脚本的。我认为当(按照您的示例)“dev loud”脚本出现问题时--silent“arg将抑制日志,但初始执行的行“npm run dev”仍将抛出异常
#!/usr/bin/env node
process.removeAllListeners('warning');
// Do your thang without triggering warnings
"dev-loud": "npm run build && nodemon -r dotenv/config dist/index.js",
"dev": "npm run dev-loud --silent"