Lighthouse v3 移行ガイド

このガイドは、以下に該当する Lighthouse v2 ユーザーを対象としています。

  • Node またはコマンドラインから、Lighthouse を実行します。
  • Lighthouse の JSON 出力を利用する。

これに当てはまらない場合、Lighthouse を実行するためのワークフローはほぼ同じです。 新機能と変更点の概要については、Lighthouse 3.0 の発表をご覧ください。

呼び出しの変更

Lighthouse では、デフォルトでパフォーマンスのシミュレーションが計算されるようになり、スロットリングの設定が大幅に変更されました。

CLI フラグ

シナリオ v2 フラグ v3 のフラグ
DevTools 3G スロットリング なし(デフォルトの動作) --throttling-method=devtools
スロットリングなし --disable-network-throttling --disable-cpu-throttling --throttling-method=provided
ネットワーク スロットリング、CPU スロットリングなし --disable-cpu-throttling --throttling-method=devtools --throttling.cpuSlowdownMultiplier=1
パフォーマンス監査を実行する --perf --preset=perf
混合コンテンツの監査の実施 --mixed-content --preset=mixed-content

ノード モジュール

Lighthouse v3 では、Node モジュールで CLI と同じ構成オプションを使用できます。これらのオプションの多くが v2 では無視されましたが、実際に Lighthouse の実行に影響するようになったという点で、これは互換性を破る変更です。

const fs = require('fs');
const lighthouse = require('lighthouse');

async function run() {
  // `onlyCategories` was previously only available as a config setting.
  // `output` was previously only available in CLI.
  const flags = {onlyCategories: ['performance'], output: 'html'};
  const html = (await lighthouse('https://google.com/', flags)).report;
  fs.writeFileSync('report.html', html);
}

出力の変更

JSON 出力の新しいトップレベル形式

Lighthouse v3 が返す JSON オブジェクトには、次の 3 つのトップレベル プロパティが含まれるようになりました。

  • lhr。監査の結果。「Lighthouse の結果」の略称。これは基本的に v2 ではトップレベルのオブジェクトですが、v3 ではこのオブジェクトの形状にも互換性を破る変更が行われています。結果オブジェクトの変更をご覧ください。
  • artifacts。監査中に Chrome から収集されたデータ。以前は、LHR の特性と混同されていました。
  • report。フォーマットされたレポートの HTML/JSON/CSV を文字列として返します。

結果オブジェクトの変更

JSON 出力の新しいトップレベル形式で説明したように、監査の結果は lhr プロパティを介して取得できるようになりました。v2 では、このオブジェクトの内容は基本的にトップレベルの JSON 出力です。ただし、このオブジェクトの形状は v3 で変更されています。次の表に、すべての変更を示します。

  • v2v2 と v3v2 の両方の列に値がある行の場合、コード内の v2 プロパティへの参照を v3 と同等の値に置き換える必要があります。
  • 行の [v3] 列に値がない場合、[Notes] 列にはオプションが記載されています。
  • ID などの項目はプレースホルダ テキストを表します。
v2 プロパティ v3 と同等 メモ
initialUrl requestedUrl
url finalUrl
generatedTime fetchedTime
reportCategories categories 配列からキー付きオブジェクトに変更しました。
reportGroups categoryGroups
audits.ID.name audits.ID.id
audits.ID.description audits.ID.title
audits.ID.helpText audits.ID.description
audits.ID.scoringMode audits.ID.scoreDisplayMode 指定可能な値が numeric|binary|manual|informative|not-applicable|error に展開されました。
audits.ID.score audits.ID.score scoreDisplayMode が数値またはバイナリの場合、スコアは常に 0 ~ 1 になります(0 ~ 100 ではありません)。他の表示モードでは、合否の概念がないため、スコアは常に null になります。
audits.ID.displayValue audits.ID.displayValue 文字列を補間するために、printf スタイルの引数の配列として使えるようになりました。
audits.ID.debugString audits.ID.explanation audits.ID.errorMessage audits.ID.warnings debugString 値は、目的に応じて上記の 3 つのプロパティのいずれかに変換されます。
audits.ID.details audits.ID.details 詳細の構造が、より利用しやすいものになりました。.items の各エントリは、any[] ではなく、信頼性の高いキーを持つオブジェクトです。
audits.ID.error audits.ID.scoreDisplayMode === 'error'
audits.ID.notApplicable audits.ID.scoreDisplayMode === 'not-applicable'
audits.ID.informative audits.ID.scoreDisplayMode === 'informative'
audits.ID.manual audits.ID.scoreDisplayMode === 'manual'
audits.ID.extendedInfo 削除しました。details を代わりに使用してください。