Przewodnik po migracji do Lighthouse w wersji 3

Ten przewodnik jest przeznaczony dla użytkowników Lighthouse w wersji 2, którzy:

  • Uruchom Lighthouse z poziomu Node lub z wiersza poleceń.
  • Polegaj na danych wyjściowych JSON z Lighthouse.

Jeśli w Twoim przypadku żaden z tych warunków nie występuje, oznacza to, że przepływ pracy związany z Lighthouse jest w większości taki sam. Na stronie Ogólnie o wprowadzeniu Lighthouse 3.0 znajdziesz omówienie nowych funkcji i zmian.

Zmiany wywołań

Obecnie Lighthouse domyślnie oblicza symulowaną wydajność, a ustawienia ograniczania wykorzystania uległy znacznej zmianie.

Flagi interfejsu wiersza poleceń

Scenariusz Flagi wersji 2 Flagi wersji 3
Ograniczanie 3G w Narzędziach deweloperskich Brak (działanie domyślne) --throttling-method=devtools
Bez ograniczania --disable-network-throttling --disable-cpu-throttling --throttling-method=provided
Ograniczanie wykorzystania sieci, brak ograniczania wykorzystania procesora --disable-cpu-throttling --throttling-method=devtools --throttling.cpuSlowdownMultiplier=1
Przeprowadzaj audyty wydajności --perf --preset=perf
Przeprowadź audyty treści mieszanych --mixed-content --preset=mixed-content

Moduł węzła

W Lighthouse w wersji 3 moduł węzła akceptuje te same opcje konfiguracji co interfejs wiersza poleceń. Jest to przełomowa zmiana, ponieważ wiele z tych opcji zostało zignorowanych w wersji 2, ale teraz będą one miały wpływ na działanie 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);
}

Zmiany w danych wyjściowych

Nowy format najwyższego poziomu w danych wyjściowych JSON

Obiekt JSON zwracany przez Lighthouse w wersji 3 zawiera teraz 3 właściwości najwyższego poziomu:

  • lhr. Wyniki audytów. Skrót od angielskiej nazwy „Lighthouse Results”. W wersji 2 był to w zasadzie obiekt najwyższego poziomu, ale w wersji 3 wprowadzaliśmy też zmiany kształtu tego obiektu. Zapoznaj się z sekcją Zmiany w obiekcie wyników.
  • artifacts. Dane zebrane z Chrome podczas kontroli. Wcześniej łączyło się to z właściwościami LHR.
  • report. Sformatowany raport HTML/JSON/CSV jako ciąg znaków.

Zmiany w obiekcie wyników

Jak wspomnieliśmy w sekcji Nowy format najwyższego poziomu w danych wyjściowych JSON, wyniki kontroli są teraz dostępne we właściwości lhr. W wersji 2 zawartość tego obiektu była zasadniczo danymi wyjściowymi JSON najwyższego poziomu. W wersji 3 kształt tego obiektu zmienił się jednak. Wszystkie zmiany są wymienione w tabeli poniżej.

  • Jeśli wiersz zawiera wartość zarówno w kolumnach v2, jak i v3, oznacza to, że wszystkie odniesienia do właściwości v2 w kodzie musisz zastąpić odpowiednikiem w wersji v3.
  • Jeśli wiersz nie ma wartości w kolumnie v3, kolumna Uwagi zawiera opis dostępnych opcji.
  • Pamiętaj, że elementy takie jak ID to tekst zastępczy.
Usługa w wersji 2 Odpowiednik w wersji 3 Uwagi
initialUrl requestedUrl
url finalUrl
generatedTime fetchedTime
reportCategories categories Zmieniono z tablicy na obiekt z kluczem.
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 Możliwe wartości zostały powiększone do numeric|binary|manual|informative|not-applicable|error.
audits.ID.score audits.ID.score Gdy scoreDisplayMode ma wartość liczbową lub binarną, wyniki są zawsze liczbą z zakresu od 0 do 1 (nie od 0 do 100). W przypadku innych trybów wyświetlania wyniki zawsze wynoszą null, ponieważ nie występuje tu zasada zaliczenia/niezaliczenia.
audits.ID.displayValue audits.ID.displayValue Może teraz być tablicą argumentów w stylu printf do interpolacji ciągu znaków.
audits.ID.debugString audits.ID.explanation audits.ID.errorMessage audits.ID.warnings Wartości debugString zostały przekonwertowane do jednej z 3 powyższych właściwości w zależności od ich intencji.
audits.ID.details audits.ID.details Struktura szczegółów uległa zmianie, dzięki czemu łatwiej jest je wykorzystać. Każdy wpis w .items jest obiektem z niezawodnymi kluczami zamiast 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 Usunięto. Użyj w zamian zasady details.