Guia de migração do Lighthouse v3

Este guia é para usuários do Lighthouse v2 que:

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

Se isso não se aplicar a você, seu fluxo de trabalho para executar o Lighthouse será basicamente o mesmo. Consulte Anúncio do Lighthouse 3.0 para ter uma visão geral dos novos recursos e mudanças.

Mudanças na invocação

O Lighthouse agora calcula a performance simulada por padrão, e as configurações de limitação foram bastante alteradas.

Flags da CLI

Cenário Flags v2 Flags v3
Limitação de 3G do DevTools Nenhuma (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
Executar auditorias de conteúdo misto --mixed-content --preset=mixed-content

Módulo de nó

No Lighthouse v3, o módulo Node aceita as mesmas opções de configuração da CLI. Essa é uma mudança importante porque 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 na 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. Os resultados das auditorias. Abreviação de "Lighthouse Results" (resultados do Lighthouse). Esse era essencialmente o objeto de nível superior na v2, mas a v3 também introduz mudanças importantes na forma desse objeto. Consulte Alterações no objeto de resultados.
  • artifacts: os dados coletados do Chrome durante a auditoria. Isso estava anteriormente misturado com as propriedades do LHR.
  • report: o relatório HTML/JSON/CSV formatado como uma string.

Mudanças no objeto de resultados

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

  • Se uma linha tiver um valor nas colunas v2 e v3, você precisará substituir qualquer referência à propriedade v2 no código pelo equivalente v3.
  • Quando uma linha não tem um valor na coluna v3, a coluna Notas descreve suas opções.
  • Itens como ID representam marcadores de posição de texto.
Propriedade v2 v3-Equivalent 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 0-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á conceito 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 de debugString foram convertidos em uma das três propriedades acima, dependendo da intenção.
audits.ID.details audits.ID.details A estrutura dos detalhes mudou para ser mais fácil de consumir. 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.