2014-11-08 73 views
17

当你运行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好看的错误,你的棉短绒的输出后得到一个巨大的错误消息:

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这样的工具这样的任务?谢谢!

+2

非常讨厌的问题。奇怪的是,很难找到任何有关这方面的讨论... – 2015-03-12 18:30:07

+0

正在使用'jscs'作为linter在运行脚本中发生的同样的事情。 – 2015-04-16 13:09:07

+0

关于NPM上的这个问题有几个问题。 https://github.com/npm/npm/issues/6124 https://github.com/npm/npm/issues/8821 – daotoad 2016-08-12 06:15:06

回答

1

我刚刚试图找出相同的。不是一个完美的答案,但它种合作,指定掉毛的预测试脚本(docs)像这样:

// package.json 
{ 
    // ... 
    "scripts": { 
    // ... definition for test ... 
    "pretest": "./node_modules/jsxhint/cli.js src/", 
    } 
} 

然后,当你在npm test第一次输入,你只会得到一个单行错误NPM。显然,这意味着如果你没有失败,你将无法运行你的测试。

另一种选择是使用某种第三方任务跑步者,如Make,GruntGulp

我只使用了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 testmake lint运行这些命令。

+0

是的,现在我刚刚使用gulp和grunt,它工作正常,虽然增加为CLI跑步者提供额外的安装步骤,另一个命令记住我想精简。不是什么大不了的,但我会留下这个问题,看看有没有人提出一些问题(并检查是否有问题提交给npm :-)) – 2014-11-26 21:59:14

1

您可以通过redirecting the stderr将错误消除为/ dev/null。例如:

{ 
"test": "karma start" (package.json) 
} 

运行:

$ npm run test 2> /dev/null 

现在将发送所有NPM错误/dev/null但正常输入仍然会在控制台中可见。

因为错误是由NPM抛出,业力非零状态退出,执行以下步骤后是不够的:

{ 
    "test": "karma start 2> /dev/null" 
} 

,但你可以通过创建调用与任务另一个任务战胜它标准错误重定向:

{ 
    "test": "karma start", 
    "test:silent": "npm run test 2> /dev/null" 
} 

这将确保NPM错误消息被隐藏

19

使用n个下午运行--silent选项:

$ npm run --silent test 

即使少打字,如果你定义一个shell别名:

$ alias run='npm run --silent' 
$ run test 
+0

或'''npm run -s test''' – Rockallite 2015-06-26 09:14:17

+2

不适用于OP的用例。他们希望在命令行上运行'npm run lint',并在package.json的脚本条目中指定lint脚本不应该打印无用的消息。例如,希望''脚本“:{”tslint“:”tslint“,”lint“:”npm run --silent tslint src/**/*。ts“}'可能有效。但不是。无用的嘈杂信息吐出来。 – daotoad 2016-08-12 05:54:17

11

如果你不关心保留棉短绒过程的返回码,您可以随时配置package.json是这样的:

{ 
    // ... 
    "scripts": { 
    // ... 
    "lint": "eslint . || true", 
    } 
} 
+2

你也可以安装'cash-true',如果你想这也可以在windows上运行 – Tim 2017-01-14 22:49:28