当您运行npm test并且失败时,您将获得测试输出+单个错误消息,如下所示:
npm ERR! Test failed. See above for more details.
Run Code Online (Sandbox Code Playgroud)
但是,我创建了一个自定义脚本lint,如下所示:
// package.json
{
// ...
"scripts": {
// ... definition for test ...
"lint": "./node_modules/jsxhint/cli.js src/",
}
}
Run Code Online (Sandbox Code Playgroud)
好吧,够简单.但是当你运行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...
Run Code Online (Sandbox Code Playgroud)
有没有办法让所有这些垃圾沉默,所以我可以像npm test脚本一样有一个干净的输出?我看到他们是如何捕获npm源代码中的错误的,但是我认为我不能只是添加一个自定义命令而不会这样做npm...希望我错了!
但是,如果我是,我会把这样的任务推到像Grunt这样的工具上会更好吗?谢谢!
Stu*_*ham 23
使用npm run --silent选项:
$ npm run --silent test
Run Code Online (Sandbox Code Playgroud)
如果定义shell别名,则输入更少:
$ alias run='npm run --silent'
$ run test
Run Code Online (Sandbox Code Playgroud)
Fed*_* B. 12
如果您不关心保留linter进程的返回代码,可以随时配置package.json如下:
{
// ...
"scripts": {
// ...
"lint": "eslint . || true",
}
}
Run Code Online (Sandbox Code Playgroud)
我只是想弄清楚同样的问题。这不是一个完美的答案,但它可以将 linting 指定为预测试脚本(docs),如下所示:
// package.json
{
// ...
"scripts": {
// ... definition for test ...
"pretest": "./node_modules/jsxhint/cli.js src/",
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当你npm test第一次输入时,你只会从 NPM 得到单行错误。显然,这意味着如果您没有 linting,您将无法运行测试。
另一种选择是使用某种第三方任务运行程序,例如 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
Run Code Online (Sandbox Code Playgroud)
然后键入make test和make lint来运行这些命令。
| 归档时间: |
|
| 查看次数: |
8319 次 |
| 最近记录: |