Для начала необходимо установить Lighthouse как npm-пакет:
npm install -g lighthouse
При использовании в Node.js проекте предпочтительно устанавливать его локально:
npm install --save-dev lighthouse
Подключение в коде осуществляется через стандартный
require или import:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
chrome-launcher используется для автоматического запуска
экземпляра Chrome, необходимого для работы Lighthouse в программном
режиме.
Для запуска аудита создаётся экземпляр Chrome и передаётся конфигурация в Lighthouse:
async function runLighthouse(url, options = {}, config = null) {
const chrome = await chromeLauncher.launch({ chromeFlags: ['--headless'] });
options.port = chrome.port;
const results = await lighthouse(url, options, config);
await chrome.kill();
return results.lhr; // Lighthouse Report (JSON)
}
Ключевые моменты:
url — адрес страницы для аудита.options — объект настроек (порт, формат отчёта,
дополнительные флаги Chrome).config — объект конфигурации аудита (кастомизация
категорий, аудитов, настроек).Объект options позволяет управлять поведением
Lighthouse:
const options = {
output: 'json', // Формат отчёта: json или html
onlyCategories: ['performance', 'accessibility'], // Выбор категорий аудита
emulatedFormFactor: 'mobile', // Мобильная или десктопная эмуляция
throttlingMethod: 'simulate', // Метод имитации сетевых условий
};
Выделенные моменты:
output влияет на тип создаваемого отчёта. При
json можно использовать данные для анализа или интеграции в
CI/CD.onlyCategories позволяет запускать только нужные
категории, ускоряя аудит.emulatedFormFactor влияет на размеры экрана и сетевые
условия.throttlingMethod — «simulate» использует симуляцию,
«devtools» работает с реальными инструментами Chrome.Конфигурация позволяет детально управлять:
Пример кастомной конфигурации:
const customConfig = {
extends: 'lighthouse:default',
settings: {
onlyCategories: ['performance', 'seo'],
throttling: {
rttMs: 150,
throughputKbps: 1638.4,
cpuSlowdownMultiplier: 4
}
},
audits: [
'first-meaningful-paint',
'largest-contentful-paint'
]
};
Пояснения:
extends позволяет наследовать стандартные
настройки.settings.throttling задаёт сетевую задержку, пропускную
способность и замедление CPU.audits — список конкретных проверок, которые будут
выполнены.Lighthouse возвращает объект отчёта (lhr) с обширной
структурой. Основные поля:
{
categories: {
performance: { score: 0.92 },
accessibility: { score: 0.85 },
seo: { score: 0.78 }
},
audits: {
'first-contentful-paint': { score: 0.9, numericValue: 1234 },
'speed-index': { score: 0.8, numericValue: 4567 }
},
fetchTime: '2026-03-23T12:00:00.000Z'
}
Ключевые аспекты:
categories — итоговые оценки по направлениям.audits — детальные метрики и рекомендации.numericValue часто выражен в миллисекундах или
килобайтах.emulatedFormFactor и throttling для
тестирования мобильной и десктопной версии.performance.config.js,
seo.config.js).extends для минимизации
дублирования.(async () => {
const url = 'https://example.com';
const options = {
output: 'json',
logLevel: 'info',
};
const config = require('./performance.config.js');
const result = await runLighthouse(url, options, config);
console.log('Performance score:', result.categories.performance.score);
console.log('First Contentful Paint:', result.audits['first-contentful-paint'].numericValue);
})();
Такой подход обеспечивает полный контроль над процессом аудита, позволяет адаптировать Lighthouse под конкретные задачи проекта и интегрировать его в автоматизированные рабочие процессы.