沉默嘈杂的npm脚本

时间:2017-08-26 04:03:29

标签: javascript node.js npm npm-scripts

我使用Protractor测试我的网络应用程序。这需要运行两个程序:

  • webdriver-manager start运行Selenium服务器。
  • protractor conf.js启动Protractor,然后与Selenium服务器通信以控制浏览器。

由于在单独的窗口中运行这些命令很烦人,我的package.json中有以下内容:

"scripts": {
  "webdriver-start": "webdriver-manager start",
  "protractor": "protractor conf.js",
  "pretest": "webdriver-manager update",
  "test": "npm-run-all -p -r webdriver-start protractor"
}

这让我只用npm run test完成所有事情。

不幸的是,Selenium会向控制台输出一个很多的噪音,这使得无法看到格式良好的Jasmine报告输出。

我会使用webdriver-manager start --quiet来限制控制台输出,但there is a bug会导致我的测试挂起。

为了解决这种情况,我尝试了

  • 正在运行npm run test --silent,但这只涉及npm自己的日志,而不是脚本的日志(同样适用于将|| true附加到脚本中)
  • 使用webdriver-manager start --detach,但这仍记录在同一个控制台中

是否有任何解决方法可以隐藏单个npm脚本的输出?

1 个答案:

答案 0 :(得分:0)

这些脚本本质上是shell命令,因此您可以使用>将输出重定向到控制台之外。

由于我使用Windows,因此this answer通过Anders Lindahl调整了命令,将stdout和stderr for webdriver重定向到NUL

"scripts": {
  "webdriver-start": "webdriver-manager start > NUL 2> NUL",
  "protractor": "protractor conf.js",
  "pretest": "webdriver-manager update",
  "test": "npm-run-all -p -r webdriver-start protractor"
}

在其他平台上,您可能会改为redirect to /dev/null

如果您需要记录所有内容而不是删除它,您可以执行以下操作将其放入日志文件中:

"scripts": {
  "webdriver-start": "webdriver-manager start > out.log 2> err.log",
  "protractor": "protractor conf.js",
  "pretest": "webdriver-manager update",
  "test": "npm-run-all -p -r webdriver-start protractor"
}