Lighthouse — это мощный инструмент для аудита
веб-страниц, который позволяет оценивать производительность,
доступность, SEO и прогрессивные веб-приложения. Для работы с ним через
JavaScript используется пакет lighthouse, который
предоставляет гибкий API с множеством параметров и опций для настройки
аудита.
lighthouseФункция lighthouse принимает два обязательных аргумента
и один опциональный:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
(async () => {
const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
const options = {
port: chrome.port,
output: 'json',
logLevel: 'info',
};
const runnerResult = await lighthouse('https://example.com', options);
})();
options1. port Определяет порт для подключения
к экземпляру Chrome. Обычно используется вместе с
chrome-launcher.
port: 9222
2. output Формат вывода результатов.
Поддерживаются значения:
'html' — генерирует отчет в HTML.'json' — возвращает результат в JSON.'csv' — вывод в формате CSV.Можно указать массив форматов:
output: ['html', 'json']
3. logLevel Определяет уровень
логирования:
'info' — стандартная информация о ходе выполнения.'error' — только ошибки.'silent' — отключает вывод логов.'verbose' — максимально подробные логи.4. onlyCategories Позволяет ограничить
аудит определенными категориями:
onlyCategories: ['performance', 'accessibility']
Допустимые категории: 'performance',
'accessibility', 'best-practices',
'seo', 'pwa'.
5. maxWaitForFcp и
maxWaitForLoad Устанавливают максимальное время
ожидания событий First Contentful Paint и полной загрузки страницы. В
миллисекундах.
maxWaitForFcp: 15000,
maxWaitForLoad: 35000
6. throttling Позволяет симулировать
сетевые условия и производительность устройства. Объект содержит
параметры:
throttling: {
rttMs: 150, // задержка сети
throughputKbps: 1638, // пропускная способность
cpuSlowdownMultiplier: 4
}
7. emulatedFormFactor Задает форму
устройства для эмуляции:
'mobile''desktop'Эта опция влияет на размеры экрана, сетевое соединение и CPU throttling, если не заданы вручную.
8. disableStorageReset Если
true, Lighthouse не очищает локальное хранилище, IndexedDB
и cookies перед аудитом.
configКонфигурация позволяет детально настраивать категории, аудиты и даже отдельные сцены (gatherers):
const config = {
extends: 'lighthouse:default',
settings: {
onlyCategories: ['performance'],
maxWaitForLoad: 45000,
emulatedFormFactor: 'desktop',
},
audits: ['first-meaningful-paint', 'speed-index'],
};
extends — базовая конфигурация,
которую можно расширить.settings — глобальные настройки,
включающие throttling, таймауты и форм-фактор.audits — массив аудитов для
выполнения.categories — позволяет создавать свои
категории или изменять существующие.Для отладки удобно использовать функции обратного вызова и настройку уровня логирования:
const options = {
logLevel: 'verbose',
output: 'json',
port: 9222,
};
const runnerResult = await lighthouse('https://example.com', options);
console.log('Performance score:', runnerResult.lhr.categories.performance.score * 100);
Ключевой момент: все параметры options
и config влияют на результат аудита,
поэтому их корректная настройка критична для получения точных
данных.
Результат runnerResult содержит:
lhr — Lighthouse Result Object с подробными данными
аудита.report — строка с отчетом в указанном формате
(json или html).Пример сохранения отчета:
const fs = require('fs');
fs.writeFileSync('report.html', runnerResult.report);
extraHeaders — объект дополнительных
HTTP-заголовков при запросе страницы.blockedUrlPatterns — массив строк или
регулярных выражений для блокировки ресурсов.disableDeviceEmulation — отключает
эмуляцию мобильного устройства.precomputedLanternData — позволяет
подгружать предварительно собранные данные для ускорения анализа.Эти параметры полезны для интеграции Lighthouse в CI/CD или при тестировании страниц с динамическим контентом.
options управляют общими параметрами
запуска и форматом отчетов.config задает глубину и содержание
аудита, включая категории, отдельные проверки и gatherers.Настройка параметров и опций — ключ к использованию Lighthouse как профессионального инструмента аудита в JavaScript.