Руководство по миграции Lighthouse v3

Это руководство предназначено для пользователей Lighthouse v2, которые:

  • Запустите Lighthouse из Node или из командной строки.
  • Положитесь на выходные данные Lighthouse в формате JSON.

Если это к вам не относится, то ваш рабочий процесс при запуске Lighthouse в основном такой же. См. «Анонс Lighthouse 3.0» для обзора новых функций и изменений.

Изменения вызова

Lighthouse теперь по умолчанию рассчитывает смоделированную производительность, а настройки регулирования были сильно изменены.

Флаги CLI

Сценарий Флаги v2 Флаги v3
DevTools Регулирование 3G Нет (поведение по умолчанию) --throttling-method=devtools
Нет регулирования --disable-network-throttling --disable-cpu-throttling --throttling-method=provided
Регулирование сети, отсутствие регулирования ЦП --disable-cpu-throttling --throttling-method=devtools --throttling.cpuSlowdownMultiplier=1
Проведите аудит производительности --perf --preset=perf
Проведите аудит смешанного контента --mixed-content --preset=mixed-content

Узловой модуль

В Lighthouse v3 модуль Node принимает те же параметры конфигурации, что и CLI. Это кардинальное изменение в том смысле, что многие из этих опций были проигнорированы в версии 2, тогда как теперь они действительно будут влиять на работу 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);
}

Изменения вывода

Новый формат верхнего уровня в выводе JSON.

Объект JSON, возвращаемый Lighthouse v3, теперь содержит 3 свойства верхнего уровня:

  • lhr . Результаты проверок. Сокращение от «Результаты маяка». По сути, это был объект верхнего уровня в версии 2, но в версии 3 также внесены серьезные изменения в форму этого объекта. См. Изменения в объекте результатов .
  • artifacts . Данные, собранные из Chrome во время аудита. Ранее это было смешано со свойствами LHR.
  • report . Отчет в формате HTML/JSON/CSV в виде строки.

Изменения в объекте результатов

Как упоминалось в разделе «Новый формат верхнего уровня в выводе JSON» , результаты аудита теперь доступны через свойство lhr . В версии 2 содержимое этого объекта по существу представляло собой вывод JSON верхнего уровня. Однако форма самого этого объекта изменилась в версии 3. В таблице ниже перечислены все изменения.

  • Если строка имеет значение как в столбцах v2 , так и в столбцах v3 , это означает, что вам следует заменить любую ссылку на свойство v2 в вашем коде эквивалентом v3.
  • Если строка не имеет значения в столбце v3 , столбец «Примечания» описывает ваши варианты.
  • Обратите внимание, что такие элементы, как ID представляют собой текст-заполнитель.
v2 Свойство v3-эквивалент Примечания
initialUrl requestedUrl
url finalUrl
generatedTime fetchedTime
reportCategories categories Изменен массив на объект с ключом.
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 Возможные значения расширены до numeric|binary|manual|informative|not-applicable|error .
audits. ID .score audits. ID .score Оценки всегда представляют собой число от 0 до 1 (не от 0 до 100), если scoreDisplayMode имеет числовое или двоичное значение. Для других режимов отображения баллы всегда null , поскольку не существует понятия «прошел/не прошел».
audits. ID .displayValue audits. ID .displayValue Теперь может быть массивом аргументов в стиле printf для интерполяции строк.
audits. ID .debugString audits. ID .explanation audits. ID .errorMessage audits. ID .warnings audits. ID .errorMessage . audits. ID .warnings Значения debugString были преобразованы в одно из трех вышеперечисленных свойств в зависимости от их назначения.
audits. ID .details audits. ID .details Структура деталей изменилась и стала более потребляемой. Каждая запись в .items представляет собой объект с надежными ключами вместо 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 Удаленный. Вместо этого используйте details .