Guida alla migrazione di Lighthouse v3

Questa guida è rivolta agli utenti di Lighthouse v2 che:

  • Esegui Lighthouse da Node o dalla riga di comando.
  • Affidati all'output JSON di Lighthouse.

Se non si applicano al tuo caso, il flusso di lavoro per l'esecuzione di Lighthouse è praticamente lo stesso. Per una panoramica delle nuove funzionalità e delle modifiche, consulta l'articolo Annuncio di Lighthouse 3.0.

Modifiche alla chiamata

Lighthouse ora calcola il rendimento simulato per impostazione predefinita e le impostazioni di limitazione sono state notevolmente modificate.

Flag della CLI

Scenario Flag v2 Flag v3
Limitazione 3G di DevTools Nessuno (comportamento predefinito) --throttling-method=devtools
Nessuna limitazione --disable-network-throttling --disable-cpu-throttling --throttling-method=provided
Limitazione della rete, nessuna limitazione della CPU --disable-cpu-throttling --throttling-method=devtools --throttling.cpuSlowdownMultiplier=1
Esegui controlli delle prestazioni --perf --preset=perf
Eseguire controlli dei contenuti misti --mixed-content --preset=mixed-content

Modulo nodo

In Lighthouse v3, il modulo Node accetta le stesse opzioni di configurazione dell'interfaccia a riga di comando. Si tratta di una modifica che comporta una rottura nel senso che molte di queste opzioni sono state ignorate nella versione 2, mentre ora influiscono effettivamente sul funzionamento di 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);
}

Modifiche all'output

Nuovo formato di primo livello nell'output JSON

L'oggetto JSON restituito da Lighthouse 3 ora contiene tre proprietà di primo livello:

  • lhr. I risultati dei controlli. Abbreviazione di "Risultati Lighthouse". Si trattava essenzialmente dell'oggetto di primo livello nella versione 2, ma la versione 3 introduce modifiche che comportano interruzioni anche nella forma di questo oggetto. Consulta Modifiche all'oggetto risultati.
  • artifacts. I dati raccolti da Chrome durante il controllo. In precedenza, queste informazioni erano mescolate con le proprietà dell'LHR.
  • report. Il report HTML/JSON/CSV formattato come stringa.

Modifiche all'oggetto risultati

Come menzionato in Nuovo formato di primo livello nell'output JSON, i risultati dei controlli non sono disponibili tramite la proprietà lhr. Nella versione 2, i contenuti di questo oggetto erano essenzialmente l'output JSON di primo livello. Tuttavia, la forma dell'oggetto è cambiata nella versione 3. La tabella seguente elenca tutte le modifiche.

  • Se una riga contiene un valore in entrambe le colonne v2 e v3, significa che devi sostituire qualsiasi riferimento alla proprietà v2 nel tuo codice con l'equivalente v3.
  • Quando una riga non contiene un valore nella colonna v3, le opzioni sono descritte nella colonna Note.
  • Tieni presente che elementi come ID rappresentano un testo segnaposto.
Proprietà v2 v3-Equivalent Note
initialUrl requestedUrl
url finalUrl
generatedTime fetchedTime
reportCategories categories È stato modificato da array a oggetto con chiave.
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 I valori possibili sono stati espansi a numeric|binary|manual|informative|not-applicable|error.
audits.ID.score audits.ID.score I punteggi sono sempre un numero compreso tra 0 e 1 (non 0-100) quando scoreDisplayMode è numerico o binario. I punteggi sono sempre null per altre modalità di visualizzazione, in quanto non nozione di superamento/successo.
audits.ID.displayValue audits.ID.displayValue Ora può essere un array di argomenti in stile Printf per l'interpolazione di stringhe.
audits.ID.debugString audits.ID.explanation audits.ID.errorMessage audits.ID.warnings debugString valori sono stati convertiti in una delle tre proprietà precedenti a seconda delle intenzioni degli utenti.
audits.ID.details audits.ID.details La struttura dei dettagli è cambiata per essere più fruibile. Ogni voce in .items è un oggetto con chiavi affidabili invece di 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 Rimosso. Usa invece il criterio details.