Guida alla migrazione di Lighthouse v3

Questa guida è rivolta agli utenti di Lighthouse 2 che:

  • Esegui Lighthouse da Node o dalla riga di comando.
  • Fai affidamento sull'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 Annuncio di Lighthouse 3.0.

Modifiche all'invocazione

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 larghezza di banda della rete, nessuna limitazione della CPU --disable-cpu-throttling --throttling-method=devtools --throttling.cpuSlowdownMultiplier=1
Eseguire audit sul rendimento --perf --preset=perf
Eseguire audit dei contenuti misti --mixed-content --preset=mixed-content

Modulo Node

In Lighthouse v3, il modulo Node accetta le stesse opzioni di configurazione della CLI. 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 "Lighthouse Results". 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 results.
  • 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 indicato 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 di questo oggetto è cambiata nella versione 3. La tabella seguente elenca tutte le modifiche.

  • Se una riga ha un valore sia nelle colonne v2 che v3, significa che devi sostituire qualsiasi riferimento alla proprietà v2 nel codice con l'equivalente v3.
  • Quando una riga non ha un valore nella colonna v3, la colonna Note descrive le opzioni disponibili.
  • Tieni presente che elementi come ID rappresentano il 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 le altre modalità di visualizzazione, in quanto non esiste un concetto di superato/non superato.
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 I valori debugString sono stati convertiti in una delle tre proprietà sopra indicate in base alla loro intenzione.
audits.ID.details audits.ID.details La struttura dei dettagli è stata modificata per renderla più fruibile. Ogni voce in .items è un oggetto con chiavi affidabili anziché 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. Utilizza invece details.