首页 > 解决方案 > 我可以跨 Nx Angular 单一存储库合并多个覆盖率报告吗?

问题描述

我让 Jenkins 构建了我们的 nx Angular 单一存储库。现在,每个应用程序/模块都会在覆盖目录下生成自己的报告。是否有一种经过批准的方法或一种好方法可以将所有这些报告合并到一个 html 报告中?

标签: angularnrwlnrwl-nx

解决方案


我自己也有同样的问题。在 3 个不同的项目中遇到这种需求后,我决定写一篇关于它的博客文章: https ://yonatankra.com/how-to-create-a-workspace-coverage-report-in-nrwl-nx-单回购/

本质上,我编写了一个脚本来获取lcov文件并将它们组合起来:

const glob = require('glob');
const fs = require('fs');
const path = require('path');

const getLcovFiles = function (src) {
  return new Promise((resolve, reject) => {
    glob(`${src}/**/lcov.info`, (error, result) => {
      if (error) return reject(error);
      resolve(result);
    });
  })
};

(async function(){
  const files = await getLcovFiles('coverage');
  const mergedReport = files.reduce((mergedReport, currFile) => mergedReport += fs.readFileSync(currFile), '');
  await fs.writeFile(path.resolve('./coverage/lcov.info'), mergedReport, (err) => {
    if (err) throw err;
    console.log('The file has been saved!');
  });
})();

test然后我在 npm脚本之后使用它。

如果需要 JSON 格式,可以在合并后使用https://github.com/davglass/lcov-parse或其他转换器。


推荐阅读