Guia de migração do Lighthouse v3

Este guia é destinado a usuários do Lighthouse v2 que:

  • Execute o Lighthouse a partir do Node ou da linha de comando.
  • Confie na saída JSON do Lighthouse.

Caso contrário, o fluxo de trabalho para executar o Lighthouse será o mesmo. Consulte Anúncio do Lighthouse 3.0 para ter uma visão geral dos novos recursos e alterações.

Alterações de invocação

O Lighthouse agora calcula o desempenho simulado por padrão, e as configurações de limitação passaram por mudanças significativas.

Sinalizações da CLI

Cenário Sinalizações da v2 Sinalizações da v3
Limitação do DevTools 3G Nenhum (comportamento padrão) --throttling-method=devtools
Sem limitação --disable-network-throttling --disable-cpu-throttling --throttling-method=provided
Limitação de rede, sem limitação de CPU --disable-cpu-throttling --throttling-method=devtools --throttling.cpuSlowdownMultiplier=1
Realizar auditorias de desempenho --perf --preset=perf
Realizar auditorias de conteúdo misto --mixed-content --preset=mixed-content

Módulo de nó

No Lighthouse v3, o módulo do Node aceita as mesmas opções de configuração que a CLI. Essa é uma alteração interruptiva, em que muitas dessas opções foram ignoradas na v2, mas agora elas vão afetar a execução do 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);
}

Mudanças de saída

Novo formato de nível superior na saída JSON

O objeto JSON retornado pelo Lighthouse v3 agora contém três propriedades de nível superior:

  • lhr. Resultados das auditorias. Abreviação de "Lighthouse Results". Esse era essencialmente o objeto de nível superior na v2, mas a v3 também introduz alterações interruptivas na forma desse objeto. Consulte Mudanças no objeto de resultados.
  • artifacts. Os dados coletados do Chrome durante a auditoria. Isso já estava misturado com as propriedades do LHR.
  • report. O relatório formatado em HTML/JSON/CSV como uma string.

Alterações no objeto de resultados

Conforme mencionado em Novo formato de nível superior na saída JSON, os resultados das auditorias agora estão disponíveis pela propriedade lhr. Na v2, o conteúdo desse objeto era essencialmente a saída JSON de nível superior. No entanto, a forma desse objeto em si foi alterada na v3. A tabela abaixo lista todas as mudanças.

  • Se uma linha tiver um valor nas colunas v2 e v3, isso significa que é preciso substituir qualquer referência à propriedade v2 no seu código pelo equivalente à v3.
  • Quando uma linha não tem um valor na coluna v3, a coluna Observações descreve suas opções.
  • Itens como ID representam o texto marcador de posição.
Propriedade v2 Equivalente a v3 Observações
initialUrl requestedUrl
url finalUrl
generatedTime fetchedTime
reportCategories categories Mudança de matriz para um objeto com chave.
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 Os valores possíveis foram expandidos para numeric|binary|manual|informative|not-applicable|error.
audits.ID.score audits.ID.score As pontuações são sempre um número entre 0 e 1 (não de 0 a 100) quando scoreDisplayMode é numérico ou binário. As pontuações são sempre null para outros modos de exibição, porque não há noção de aprovação/reprovação.
audits.ID.displayValue audits.ID.displayValue Agora pode ser uma matriz de argumentos no estilo printf para interpolação de string.
audits.ID.debugString audits.ID.explanation audits.ID.errorMessage audits.ID.warnings Os valores debugString foram convertidos em uma das três propriedades acima, dependendo da intent deles.
audits.ID.details audits.ID.details A estrutura dos detalhes mudou para ser mais consumível. Cada entrada em .items é um objeto com chaves confiáveis em vez 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 Removido. Use details