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

标签 node.js npm travis-ci coveralls

我有一个应用程序 ( https://github.com/idmillington/dendry ) 使用 Travis CI 来监控构建状态。我使用 Istanbul 生成一份覆盖率报告,我想将其发送给 Coveralls,以便为 README 生成一个覆盖率按钮。

所有这些我都可以开始工作。但是……

当我在本地运行 npm test 时,我不想发送覆盖率数据。我通常为每次提交运行数十次 npm test。但是当我推送并且 Travis 完成它的工作时,我希望 Travis 为我更新覆盖范围。

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

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

这对于本地来说很好,并且不会更新 Coveralls,但 Travis 也不会更新 Coveralls。或者我可以这样做:

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

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

据我所知,我不能让 Travis 运行 npm test 以外的东西。

我不愿意要求任何潜在用户或贡献者记得测试使用

$ npm run-script test-local

或类似的东西,尤其是运行 npm test 会在没有正确的工作服私钥的情况下生成上传错误。

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

最佳答案

事实证明,答案简单得可怕。 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 - 仅从 Travis 向 Coveralls 发送数据,而不是在本地测试时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25108072/

相关文章:

laravel - 在 multi ./src/main.js 中未找到此相关模块 : * ./src/main.js

node.js - 如何使用 nvm 正确升级 Node

java - 成功构建后让 travis-ci 压缩我的项目并将其推送到 github

testing - Travis 支持 Allure 报告吗?

php - TravisCI Docker 权限

javascript - Node.js 和 Express : How to return response after asynchronous operation

node.js - 在Adonis.js中为什么refreshToken为空?

NPM 坚持使用错误的注册表 URL

node.js - 创建外部模块时 typescript 类型不匹配

node.js - MongoDB 不报告关闭连接