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

时间:2015-12-22 23:42:23

标签: node.js npm

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

有没有一种很好的方法可以全局设置它,有没有办法为每个脚本运行设置它?

5 个答案:

答案 0 :(得分:100)

所有脚本:

您可以通过以下几种方式将日志级别设置为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",
   }
}

答案 1 :(得分:30)

您应该可以同时使用--quiet--silent选项,如

npm install --quiet

--quiet会显示stderr和警告,--silent应该压制几乎所有内容

您也可以将stdout / stderr发送到/dev/null,如下所示:

npm install > "/dev/null" 2>&1

或更少精简

npm install &> /dev/null

答案 2 :(得分:1)

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

#!/usr/bin/env node

process.removeAllListeners('warning');

// Do your thang without triggering warnings

答案 3 :(得分:0)

npm install --quiet --no-progress 

将保留警告和错误,并在支持它的终端上取消ADHD进度条。

答案 4 :(得分:0)

对于要保持沉默而不必每次都添加--silent的单个脚本,可以制作一个新脚本来调用上一个脚本并添加--silent

package.json中的示例脚本:

    "dev-loud": "npm run build && nodemon -r dotenv/config dist/index.js",
    "dev": "npm run dev-loud --silent"