我可以隐藏或沉默" npm ERR!"使用npm运行脚本时的输出?

时间:2016-06-28 18:52:17

标签: npm

我正在使用npm run script执行诸如" build"之类的任务。和"测试"。

例如,我的package.json如下所示:

{
  "name": "fulfillment-service",
  "version": "1.0.0",
  "description": "Endpoint for CRUD operations on fulfillment status",
  "main": "src/server.js",
  "scripts": {
    "build": "tsc",
    "test": "tape tests/*.js"
  },
  "dependencies": {},
  "devDependencies": {
    "typescript": "^1.8.10"
  }
}

当我运行npm run build并且成功时,输出如下:

> fulfillment-service@1.0.0 build d:\code\fulfillment-service
> tsc

当我运行npm run build并且失败时,输出如下:

> fulfillment-service@1.0.0 build d:\code\fulfillment-service
> tsc
src/server.ts(51,81): error TS2339: Property 'connection' does not exist on type 'IncomingMessage'.
npm ERR! Windows_NT 10.0.10586
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "build"
npm ERR! node v6.2.1
npm ERR! npm  v3.9.3
npm ERR! code ELIFECYCLE
npm ERR! fulfillment-service@1.0.0 build: `tsc`
npm ERR! Exit status 2
npm ERR! 
npm ERR! Failed at the fulfillment-service@1.0.0 build script 'tsc'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the fulfillment-service package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     tsc
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs fulfillment-service
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls fulfillment-service
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR!     d:\code\fulfillment-service\npm-debug.log

这会为整个控制台填充无用的信息,我必须滚动到顶部以查看失败的原因。

在开发过程中,是否有隐藏/静音以npm ERR!开头的行?

6 个答案:

答案 0 :(得分:23)

您必须使用 npm run build --silent

这不会记录在npm helpnpm help run或其他任何显而易见的内容中,但通过互联网搜索,您可以发现apparently已记录在loglevel中{1}}。您还可以使用npm help 7 config中的How do I use reflection to invoke a private method?选项。

.npmrc(简称:--silent)选项会抑制:

  • -s开头的两行说明您正在运行的命令。
  • >错误。
  • 如果出现错误,请创建npm ERR!

注意:使用npm脚本运行其他npm脚本可能需要多次使用npm-debug.log。示例--silent

package.json

如果您执行{ . . . "scripts": { "compile": "tsc", "minify": "uglifyjs --some --options", "build": "npm run compile && npm run minify" } } 并且TypeScript发现错误,那么您将从两个脚本中获取npm run build。要取消它们,您必须将构建脚本更改为npm ERR! 使用npm run compile --silent && npm run minify运行它。

答案 1 :(得分:6)

将文件.npmrc添加到项目中并放入文件loglevel=silent

答案 2 :(得分:3)

与此相关的其他帖子的一个变体(但没有足够的信誉来评论!),并且作为停止间隙更快/更方便的是,您可以更改 npm 原位运行的进程的退出状态,以便它不认为它失败了。显然,这不会阻止链接的命令在它之后运行。 sh 做类似于 JS 的布尔求值,只需在末尾添加 || true,例如:

"myscript": "eslint || true"

希望这也足够明显,以便其他开发人员可以在他们来找您之前找到它!

答案 3 :(得分:0)

npm上存在一个问题:run-scripts are too noisy while used in development #8821(在上面的评论中也有提及)

在该问题的讨论中,有几个人提到创建别名,例如: npr(使用--silent选项gcampbell在他/她的回答中描述)。虽然--silent可以隐藏一些npm类型的问题,例如格式错误的package.json,但现在这似乎是一个合理的解决方案。

alias npr='npm run --silent $*'

该讨论的另一件事可能值得研究,虽然它是另一种工具,yarnfacebook blog post所描述的。

答案 4 :(得分:0)

如果您创建了自定义脚本,并且该脚本返回了NPM错误(即使没有错误),请添加 process.exitCode = 0; 在脚本末尾以避免错误。

答案 5 :(得分:-2)

正如其他人所说,--silent的问题是您输掉了所有输出。对于大多数情况,似乎有另一种方式:

npm run something 2>/dev/null

如果您正在运行的某个二进制文件恰好写入stderr,那么将被禁止。但大多数节点的东西写入stdout,所以它不应该是一个问题。

当然,这只适用于支持输出重定向的shell环境。