При переходе с одной версии Lighthouse на другую важно учитывать изменения в API, структуре отчётов и возможные изменения в настройках аудитов. Библиотека постоянно развивается, и новые версии могут вводить устранение устаревших функций, модификацию схем данных и корректировку методов запуска аудитов. Основной принцип миграции — анализ release notes и постепенная адаптация существующего кода под новую версию.
Для проектов на Node.js обновление Lighthouse выполняется через npm или yarn:
npm install lighthouse@latest
или
yarn add lighthouse@latest
Важно проверять совместимость с версией Node.js, так как новые версии Lighthouse иногда требуют более современных версий среды выполнения.
В старых версиях для запуска аудита использовался синхронный метод:
const lighthouse = require('lighthouse');
const results = lighthouse(url, options, config);
В новых версиях предпочтение отдаётся асинхронной версии:
import lighthouse from 'lighthouse';
import chromeLauncher from 'chrome-launcher';
(async () => {
const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
const options = {port: chrome.port};
const results = await lighthouse('https://example.com', options);
await chrome.kill();
})();
Ключевой момент: port теперь является
обязательным при запуске через удалённый экземпляр Chrome, а
использование встроенного lighthouse() без ChromeLauncher
может не поддерживаться.
Конфигурации стали более гибкими. Старый способ:
const config = {
extends: 'lighthouse:default',
settings: {
onlyCategories: ['performance']
}
};
В новых версиях можно создавать кастомные конфиги с точечной настройкой аудитов:
import {config as defaultConfig} from 'lighthouse/lighthouse-core/config/default-config.js';
const customConfig = {
...defaultConfig,
settings: {
...defaultConfig.settings,
onlyAudits: ['first-contentful-paint', 'largest-contentful-paint'],
throttlingMethod: 'simulate'
}
};
Это позволяет запускать только нужные аудиты, экономя ресурсы и ускоряя анализ.
Ранее объект results содержал поля lhr и
report:
const {lhr, report} = results;
С введением новых версий формат отчёта немного изменился:
json, html,
csv).lhr теперь более
строго типизированы, и некоторые ключи могут быть удалены или
переименованы.Необходимо проверять код, который обращается к метрикам, чтобы
избежать ошибок undefined.
В старых версиях можно было отключать отдельные аудиты через массив
disabledAudits. Новая версия использует явное указание
onlyAudits или модификацию конфига:
const customConfig = {
extends: 'lighthouse:default',
settings: {
onlyAudits: ['speed-index', 'interactive']
}
};
Важное изменение: старые способы отключения аудитов могут перестать работать, поэтому миграция требует проверки всех кастомных конфигураций.
Новые версии Lighthouse поддерживают расширенные методы анализа, например:
Эти возможности требуют изучения новых интерфейсов, но позволяют гибко интегрировать Lighthouse в сложные пайплайны.
disabledAudits на onlyAudits, проверить
настройки категорий.lhr.categories после
обновления, так как ключи могут измениться.Миграция между версиями Lighthouse требует внимательного анализа всех точек взаимодействия: запуск, конфигурации, обработка результатов и автоматизация. При правильном подходе переход занимает минимальное время и позволяет использовать новые возможности библиотеки без потери данных.