现在我有一个使用 lerna
的 monorepo,每个包都有自己的测试/覆盖工具,这意味着一个包可以使用 ava
+ nyc
另一个可以使用jest
。我正在单独构建每个包的覆盖范围,因此每个包都有自己的覆盖范围文件夹。这导致 lerna 在我发布时无法判断要更新哪些包,因为每当我运行新测试时,我的提交都会充满新的覆盖文件,所有这些都是因为这一行:
Code coverage generated by istanbul at Wed Apr 25 2018 00:03:42 GMT-0400 (EDT)
我已经找到了 footer in istanbul并且可能会添加一个新的记者,该记者在页脚中不会有时间戳, Istanbul 尔采取这一变化的机会很小。
我正在寻找一种使用 git/diffing 来忽略( checkout )文件中此行的更改的方法。问题是没有一致的方法(可能是正则表达式)来忽略此文件,这意味着它并不总是位于同一行。所以我不能使用补丁文件。
我希望有任何关于忽略对特定文件的给定更改的建议。
选项:
- 考虑向 Istanbul 尔添加 PR 或删除时间戳的 fork (不利)
- 当生成新的覆盖范围且最新覆盖范围与新覆盖范围之间的差异仅是此页脚更改时,如果未进行任何实际更改,则通过保留原始时间戳的 checkout 方式尊重文件。
- 使用
jsdom
创建一个脚本,使用 Node 解析html
文件并删除时间戳,并在覆盖脚本运行后更新覆盖文件。
寻求建议!
最佳答案
我用一种不同的方式解决了这个问题。
A.我将覆盖记者更改为仅提供不包含任何特定时间戳数据的 JSON。
lerna exec -- "json -I -e \"this.jest.coverageReporters=['json']\" -f ./package.json"
B.我删除了所有报告,只留下 JSON
lerna exec -- rm -rf ./coverage/lcov-report
C.向父项目添加脚本以构建覆盖范围( merge 所有 json 文件)
istanbul report --include=./packages/**/coverage/coverage-final.json
这样做的另一个好处是可以为所有包生成一个站点,无论这些包是如何测试的。
关于javascript - 删除/忽略 Istanbul 尔 html 或 lcov 覆盖率报告页脚时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50034312/