Guide de migration Lighthouse v3

Ce guide s'adresse aux utilisateurs de Lighthouse v2 qui:

  • Exécutez Lighthouse depuis Node ou la ligne de commande.
  • Appuyez-vous sur la sortie JSON de Lighthouse.

Si vous n'êtes pas concerné par ces cas de figure, votre workflow pour exécuter Lighthouse est presque le même. Consultez l'article Annonce de Lighthouse 3.0 pour un aperçu des nouvelles fonctionnalités et des modifications.

Modifications apportées aux invocations

Lighthouse calcule désormais les performances simulées par défaut, et les paramètres de limitation ont été fortement modifiés.

Options de la CLI

Scénario Indicateurs de la version 2 Indicateurs de la version 3
Limitation 3G des outils de développement Aucune (comportement par défaut) --throttling-method=devtools
Aucune limitation --disable-network-throttling --disable-cpu-throttling --throttling-method=provided
Limitation de la bande passante réseau, aucune limitation du processeur --disable-cpu-throttling --throttling-method=devtools --throttling.cpuSlowdownMultiplier=1
Effectuer des audits de performances --perf --preset=perf
Effectuer des audits de contenu mixte --mixed-content --preset=mixed-content

Module de nœud

Dans Lighthouse v3, le module Node accepte les mêmes options de configuration que la CLI. Il s'agit d'une modification destructive dans le sens où bon nombre de ces options ont été ignorées dans la version 2, alors qu'elles vont désormais affecter le fonctionnement de 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);
}

Modifications des sorties

Nouveau format de niveau supérieur dans la sortie JSON

L'objet JSON renvoyé par Lighthouse v3 contient désormais trois propriétés de premier niveau:

  • lhr : résultats des audits. Abréviation de "Résultats Lighthouse". Il s'agissait essentiellement de l'objet de niveau supérieur dans la version 2, mais la version 3 introduit également des modifications destructives de la forme de cet objet. Consultez la section Modifications apportées à l'objet "résultats".
  • artifacts Données collectées par Chrome lors de l'audit. Auparavant, ces éléments étaient mêlés aux propriétés de la LHR.
  • report Rapport formaté HTML/JSON/CSV sous forme de chaîne.

Modifications apportées à l'objet de résultats

Comme indiqué dans la section Nouveau format de premier niveau dans la sortie JSON, les résultats des audits ne sont plus disponibles via la propriété lhr. Dans la version 2, le contenu de cet objet était essentiellement la sortie JSON de premier niveau. Cependant, la forme de cet objet a changé dans la version 3. Le tableau ci-dessous liste toutes les modifications.

  • Si une ligne contient une valeur dans les colonnes v2 et v3, cela signifie que vous devez remplacer toute référence à la propriété v2 dans votre code par l'équivalent v3.
  • Lorsqu'une ligne ne comporte aucune valeur dans la colonne v3, la colonne Notes décrit les options disponibles.
  • Notez que des éléments tels que ID représentent du texte d'espace réservé.
Propriété v2 Équivalent v3 Remarques
initialUrl requestedUrl
url finalUrl
generatedTime fetchedTime
reportCategories categories Le tableau a été remplacé par un objet à clé.
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 Les valeurs possibles ont été étendues à numeric|binary|manual|informative|not-applicable|error.
audits.ID.score audits.ID.score Les scores sont toujours un nombre compris entre 0 et 1 (et non entre 0 et 100) lorsque scoreDisplayMode est numérique ou binaire. Les scores sont toujours null pour les autres modes d'affichage, car il n'y a pas de notion de réussite/échec.
audits.ID.displayValue audits.ID.displayValue Peut désormais être un tableau d'arguments de style printf pour l'interpolation de chaînes.
audits.ID.debugString audits.ID.explanation audits.ID.errorMessage audits.ID.warnings Les valeurs debugString ont été converties en l'une des trois propriétés ci-dessus en fonction de leur intention.
audits.ID.details audits.ID.details La structure des détails a changé pour être plus consommable. Chaque entrée de .items est un objet doté de clés fiables au lieu de 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 Supprimé. Utilisez details à la place.