我正在使用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!
开头的行?
答案 0 :(得分:23)
您必须使用 npm run build --silent
。
这不会记录在npm help
,npm 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 $*'
该讨论的另一件事可能值得研究,虽然它是另一种工具,yarn是facebook blog post所描述的。
答案 4 :(得分:0)
如果您创建了自定义脚本,并且该脚本返回了NPM错误(即使没有错误),请添加
process.exitCode = 0;
在脚本末尾以避免错误。
答案 5 :(得分:-2)
正如其他人所说,--silent
的问题是您输掉了所有输出。对于大多数情况,似乎有另一种方式:
npm run something 2>/dev/null
如果您正在运行的某个二进制文件恰好写入stderr,那么将被禁止。但大多数节点的东西写入stdout,所以它不应该是一个问题。
当然,这只适用于支持输出重定向的shell环境。