当您运行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这样的工具会不会更好呢?谢谢!
发布于 2015-05-17 05:49:31
使用npm run --silent
选项:
$ npm run --silent test
如果您定义了一个shell别名,那么输入就更少了:
$ alias run='npm run --silent'
$ run test
发布于 2016-06-01 02:46:34
如果你不关心保留linter进程的返回码,你可以像这样配置你的package.json
:
{
// ...
"scripts": {
// ...
"lint": "eslint . || true",
}
}
发布于 2014-11-26 23:41:57
我只是在试着想出同样的办法。这不是一个完美的答案,但它将linting指定为一个预测试脚本(docs),如下所示:
// package.json
{
// ...
"scripts": {
// ... definition for test ...
"pretest": "./node_modules/jsxhint/cli.js src/",
}
}
然后,当您第一次输入npm test
时,您将只从NPM得到一个单行错误。显然,这意味着如果没有执行linted,您将无法运行测试。
另一种选择是使用像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
以运行这些命令。
https://stackoverflow.com/questions/26814034
复制相似问题