当你运行npm test
并且它失败时,你会得到测试输出+一条错误信息,如下所示:
npm ERR! Test failed. See above for more details.
但是,我制作了一个名为lint
的自定义脚本,如下所示:
// package.json
{
// ...
"scripts": {
// ... definition for test ...
"lint": "./node_modules/jsxhint/cli.js src/",
}
}
好吧,够简单。但是当你运行npm run lint
并且它失败时,而不是npm test
的漂亮错误,你会在输出linter后得到一个大量的错误信息:
npm ERR! Darwin 14.0.0
npm ERR! argv "node" "/usr/local/bin/npm" "run-script" "lint"
npm ERR! node v0.10.32
npm ERR! npm v2.1.7
npm ERR! code ELIFECYCLE
# and ~15 more lines...
有没有办法让所有这些垃圾沉默,所以我可以像npm test
脚本那样有一个干净的输出?我看到他们是如何在npm
源代码中发现错误的,但我不认为我可以添加一个自定义命令而不会像这样npm
...希望我能做到错了!
但是,如果我是,我会把这样的任务推到像Grunt这样的工具上会更好吗?谢谢!
答案 0 :(得分:22)
使用npm run var pluginName;
if (window.pluginName) {
pluginName = window.pluginName;
} else {
pluginName = {};
}
选项:
--silent
如果定义shell别名,则输入更少:
$ npm run --silent test
答案 1 :(得分:11)
如果您不关心保留linter进程的返回代码,可以随时配置package.json
:
{
// ...
"scripts": {
// ...
"lint": "eslint . || true",
}
}
答案 2 :(得分:1)
我一直想弄清楚一样。不是一个完美的答案,但它有点像lint作为预测试脚本(docs),如下:
// package.json
{
// ...
"scripts": {
// ... definition for test ...
"pretest": "./node_modules/jsxhint/cli.js src/",
}
}
然后,当您第一次输入npm test
时,您只会从NPM获得单行错误。显然,这意味着如果你没有使用,你将无法运行测试。
另一种选择是使用某种第三方任务运行器,例如Make,Grunt或Gulp。
我只使用Make,我认为它是最轻松的设置(至少在OSX和Linux上,不确定Windows)。
在根目录中创建一个Makefile
,如下所示:
lint:
./node_modules/.bin/jslint ./*.js # or whatever your lint command is
test:
./node_modules/.bin/mocha test/*.js # or whatever your test command is
.PHONY: lint test
然后输入make test
和make lint
来运行这些命令。
答案 3 :(得分:1)
您可以将redirecting the stderr的错误静音到/ dev / null。例如:
{
"test": "karma start" (package.json)
}
跑步:
$ npm run test 2> /dev/null
现在会将所有npm错误发送到/dev/null,但正常输入仍会在控制台中显示。
因为npm抛出了错误,在karma退出非零状态后,执行以下操作是不够的:
{
"test": "karma start 2> /dev/null"
}
但您可以通过创建另一个使用stderr重定向调用该任务的任务来克服它:
{
"test": "karma start",
"test:silent": "npm run test 2> /dev/null"
}
这将确保隐藏 npm 错误消息