Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在运行npm脚本时抑制输出_Node.js_Npm - Fatal编程技术网

Node.js 如何在运行npm脚本时抑制输出

Node.js 如何在运行npm脚本时抑制输出,node.js,npm,Node.js,Npm,我已经决定尝试使用npm脚本作为构建工具,到目前为止我很喜欢它。我想解决的一个问题是,当运行一个脚本来运行jshint时,当某些东西没有通过linting时,我会得到大量的“npm ERR!”行。我想抑制这些,因为linter的输出更有意义 是否有一种全局设置的好方法,以及是否有一种为每次脚本运行设置的方法?所有脚本: 您可以通过以下两种方式将日志级别设置为silent,通过整体抑制npm的输出来解决此问题: 在每次npm运行时调用: npm run --silent <your-scri

我已经决定尝试使用npm脚本作为构建工具,到目前为止我很喜欢它。我想解决的一个问题是,当运行一个脚本来运行jshint时,当某些东西没有通过linting时,我会得到大量的“npm ERR!”行。我想抑制这些,因为linter的输出更有意义

是否有一种全局设置的好方法,以及是否有一种为每次脚本运行设置的方法?

所有脚本: 您可以通过以下两种方式将日志级别设置为
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"