node.js – 仅从Travis发送数据到Coveralls,而不是在本地测试时

前端之家收集整理的这篇文章主要介绍了node.js – 仅从Travis发送数据到Coveralls,而不是在本地测试时前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个应用程序( https://github.com/idmillington/dendry)使用Travis CI来监视构建状态.我使用伊斯坦布尔来概括覆盖率报告,我想将其发送给Coveralls,为README生成一个覆盖按钮.

所有这些我都能开始工作.但…

当我在本地运行npm测试时,我不想向工作服发送覆盖数据.我通常为每次提交运行npm测试几十次.但是当我推动特拉维斯做其事时,我希望特拉维斯为我更新报道.

我可以在package.json中有这样的东西:

"scripts": {
    "test": "./node_modules/.bin/istanbul test ./node_modules/.bin/_mocha",}

哪个适用于本地,不更新工作服,但Travis也不会更新工作服.或者我可以这样做:

"scripts": {
    "test": "./node_modules/.bin/istanbul test ./node_modules/.bin/_mocha && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info",}

这对Travis来说是完美的,但每次我在本地运行npm测试时都会尝试将数据推送到Coveralls.

据我所知,我不能要求Travis运行除了npm测试之外的其他东西.

我不愿意让任何潜在的用户或贡献者记住测试使用

$npm run-script test-local

或某些此类,尤其是在运行npm测试时会产生上传错误而没有正确的工作服私钥.

有没有办法在这里获得正确的行为?

解决方法

事实证明,答案非常简单. Travis确实允许您在运行时调用您喜欢的任何脚本,因此我将其添加到我的.travis.yml文件中:
script: npm run-script test-on-travis

所以在package.json我可以定义:

"scripts": {
    "test": "./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha","test-on-travis": "./node_modules/.bin/istanbul cover --report lcovonly ./node_modules/.bin/_mocha && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js"
}

一切正常.

猜你在找的Node.js相关文章