使用灯塔在gulp中生成HTML报告

时间:2017-09-13 13:41:36

标签: google-chrome gulp lighthouse

我正在使用gulp进行项目,我为这些gulp任务添加了灯塔:

gulp.task("lighthouse", function(){
    return launchChromeAndRunLighthouse('http://localhost:3800', flags, perfConfig).then(results => {
      console.log(results);
    });
});

这是我的 launchChromeAndRunLighthouse()功能

function launchChromeAndRunLighthouse(url, flags = {}, config = null) {
  return chromeLauncher.launch().then(chrome => {
    flags.port = chrome.port;
    return lighthouse(url, flags, config).then(results =>
      chrome.kill().then(() => results));
  });
}

它在命令行中为我提供了json输出。我可以发布我的json here并获取报告。

我有什么方法可以使用 gulp 生成HTML报告?

如果您认为此问题对未来读者有所帮助,欢迎开始赏金

3 个答案:

答案 0 :(得分:2)

@EMC的答案很好,但是从那一点开始生成HTML需要多个步骤。但是,您可以像这样使用它(用TypeScript编写,在JavaScript中应该非常相似):

const { write } = await import(root('./node_modules/lighthouse/lighthouse-cli/printer'));

然后叫它:

await write(results, 'html', 'report.html');


更新

lighthouse回购已经发生了一些变化。我现在启用程序化HTML报告,如下所示:

const { write } = await import(root('./node_modules/lighthouse/lighthouse-cli/printer'));
const reportGenerator = await import(root('./node_modules/lighthouse/lighthouse-core/report/report-generator'));

// ...lighthouse setup

const raw = await lighthouse(url, flags, config);
await write(reportGenerator.generateReportHtml(raw.lhr), 'html', root('report.html'));

我知道 hacky ,但它解决了问题:)。

答案 1 :(得分:1)

我愿意

let opts = {
    chromeFlags: ['--show-paint-rects'],
    output: 'html'
}; ...

const lighthouseResults = await lighthouse(urlToTest, opts, config = null);

及以后的

JSON.stringify(lighthouseResults.lhr)

获取json

lighthouseResults.report.toString('UTF-8'),

获取HTML

答案 2 :(得分:0)

我也遇到过这个问题。我在github问题中找到了你不能以编程方式使用html选项的地方,但是Lighthouse确实公开了报告生成器,因此你可以编写简单的文件写入和打开函数来获得相同的效果。

const ReportGenerator = require('../node_modules/lighthouse/lighthouse-core/report/v2/report-generator.js');