Guida alla migrazione di Lighthouse v3

Questa guida è rivolta agli utenti di Lighthouse v2 che:

  • Esegui Lighthouse dal nodo o dalla riga di comando.
  • Affidati all'output JSON di Lighthouse.

Se non si applica al tuo caso, il flusso di lavoro per l'esecuzione di Lighthouse è sostanzialmente lo stesso. Consulta la pagina Annuncio di Lighthouse 3.0 per una panoramica delle nuove funzionalità e modifiche.

Modifiche alla chiamata

Lighthouse ora calcola le prestazioni simulate per impostazione predefinita e le impostazioni di limitazione sono state modificate in modo significativo.

Flag dell'interfaccia a riga di comando

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
Esegui controlli del contenuto misto --mixed-content --preset=mixed-content

Modulo nodo

In Lighthouse v3, il modulo Nodo accetta le stesse opzioni di configurazione dell'interfaccia a riga di comando. Questa è una modifica che provoca un errore, perché molte di queste opzioni sono state ignorate nella versione 2, mentre ora influiranno sull'esecuzione 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 v3 ora contiene tre proprietà di primo livello:

  • lhr. I risultati dei controlli. Short di "Lighthouse Results". Questo era essenzialmente l'oggetto di primo livello nella versione 2, ma la versione 3 introduce anche cambiamenti che provocano un errore nella forma di questo oggetto. Consulta Modifiche all'oggetto dei risultati.
  • artifacts. I dati raccolti da Chrome durante il controllo. In precedenza, questo aspetto era stato mescolato con le proprietà dell'LHR.
  • report. Il report formattato HTML/JSON/CSV come stringa.

Modifiche all'oggetto dei 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. Nella tabella seguente sono elencate tutte le modifiche.

  • Se una riga ha 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 ha un valore nella colonna v3, le opzioni vengono descritte nella colonna Note.
  • Tieni presente che elementi come ID rappresentano un testo segnaposto.
Proprietà v2 Equivalente v3 Note
initialUrl requestedUrl
url finalUrl
generatedTime fetchedTime
reportCategories categories 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 è previsto alcun concetto di superamento o superamento.
audits.ID.displayValue audits.ID.displayValue Ora può essere un array di argomenti di tipo printf per l'interpolazione delle stringhe.
audits.ID.debugString audits.ID.explanation audits.ID.errorMessage audits.ID.warnings I valori debugString sono stati convertiti in una delle tre proprietà precedenti a seconda del loro intent.
audits.ID.details audits.ID.details La struttura dei dettagli è cambiata per essere più consumabile. 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. Usa invece il criterio details.