首页 > 解决方案 > 删除/忽略伊斯坦布尔 html 或 lcov 覆盖报告页脚时间戳

问题描述

现在我有一个 monorepo using lerna,每个包都有它自己的测试/覆盖工具,这意味着一个包可以使用ava+nyc另一个可以使用jest。我正在为每个包单独构建覆盖范围,因此每个包都有自己的覆盖文件夹。这导致 lerna 在我发布时无法判断要更新哪些包,因为每当我运行一个新测试时,我都有一个充满新覆盖率文件的提交,这都是因为这一行:

Code coverage generated by istanbul at Wed Apr 25 2018 00:03:42 GMT-0400 (EDT)

我已经在伊斯坦布尔找到了页脚,并且可能会添加一个在页脚中没有时间戳的新记者,伊斯坦布尔接受此更改的机会很小。

我正在寻找一种使用 git / diffing 来忽略(签出)对文件中这一行的更改的方法。问题是没有一致的方式(可能是正则表达式)来忽略这个文件,这意味着它并不总是在同一行。所以我不能使用补丁文件。

我会喜欢任何关于忽略对这样的特定文件的给定更改的建议。

选项:

  1. 考虑将 PR 添加到伊斯坦布尔或删除时间戳的分叉(不利)
  2. 当生成新的覆盖并且最新的和新的之间的差异只是这个页脚更改时,如果没有进行实际更改,则通过结帐保留原始时间戳来尊重文件。
  3. jsdom使用使用节点解析文件创建脚本html,并一起删除时间戳,并在覆盖脚本运行后更新覆盖文件。

寻找建议!

标签: javascriptnode.jsgitdiffistanbul

解决方案


我以不同的方式解决了这个问题。

答:我更改了报道记者,只提供不包含任何特定时间戳数据的 JSON。

lerna exec -- "json -I -e \"this.jest.coverageReporters=['json']\" -f ./package.json"

B. 我删除了所有报告,只留下 JSON

lerna exec -- rm -rf ./coverage/lcov-report

C. 向父项目添加脚本以构建覆盖(合并所有 json 文件)

istanbul report --include=./packages/**/coverage/coverage-final.json

这具有为所有包生成一个站点的额外好处,而不管包是如何被测试的。


推荐阅读