javascript - 删除/忽略 Istanbul 尔 html 或 lcov 覆盖率报告页脚时间戳

标签 javascript node.js git diff istanbul

现在我有一个使用 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 )文件中此行的更改的方法。问题是没有一致的方法(可能是正则表达式)来忽略此文件,这意味着它并不总是位于同一行。所以我不能使用补丁文件。

我希望有任何关于忽略对特定文件的给定更改的建议。

选项:

  1. 考虑向 Istanbul 尔添加 PR 或删除时间戳的 fork (不利)
  2. 当生成新的覆盖范围且最新覆盖范围与新覆盖范围之间的差异仅是此页脚更改时,如果未进行任何实际更改,则通过保留原始时间戳的 checkout 方式尊重文件。
  3. 使用 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/

相关文章:

javascript - Parse Cloud 代码 - 使用关系数据嵌套多个查询

node.js - Mongoose 实例方法未定义

python - 从 ElectronJS 脚本运行 python-shell

git - 哪个提交引入了一个文件?

javascript - 使用 Jquery Ajax 调用 Asp.net Web 方法

javascript - 每次刷新后初始化 localStorage

javascript - 无法加载

javascript - NodeJS 使用 readline 处理上传的文件

git - 使用 git "inside"或 "outside"虚拟机?

git - 你如何删除远程 git branch "properly",也就是为所有用户更新远程分支列表?