Для начала работы с Lighthouse в Node.js необходимо установить пакет через npm:
npm install -g lighthouse
После установки Lighthouse становится доступен как CLI-инструмент. Для программного использования можно подключить библиотеку напрямую:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
Использование chrome-launcher позволяет автоматически
запускать экземпляр Chrome для анализа страниц.
Основной способ инициировать проверку сайта — вызов функции
lighthouse(url, options, config). Здесь:
url — адрес веб-страницы для анализа.options — объект с параметрами запуска.config — необязательная кастомная конфигурация
аудита.Пример минимального запуска:
(async () => {
const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
const options = {port: chrome.port, output: 'html'};
const runnerResult = await lighthouse('https://example.com', options);
console.log('Lighthouse score:', runnerResult.lhr.categories.performance.score * 100);
await chrome.kill();
})();
Ключевые моменты:
chromeFlags: ['--headless'] запускает Chrome в
безголовом режиме.runnerResult.lhr содержит объект отчёта с детальными
метриками.categories включает показатели:
performance, accessibility,
best-practices, seo, pwa.Объект options позволяет гибко настраивать поведение
Lighthouse:
const options = {
port: chrome.port,
output: 'json',
logLevel: 'info',
onlyCategories: ['performance', 'seo'],
emulatedFormFactor: 'mobile',
throttlingMethod: 'simulate',
};
output — формат отчёта: html,
json, csv.logLevel — уровень логирования: silent,
error, info, verbose.onlyCategories — ограничение аудитов выбранными
категориями.emulatedFormFactor — эмуляция устройства:
mobile, desktop.throttlingMethod — метод ограничения скорости:
simulate, devtools.Lighthouse поддерживает собственные конфигурации, которые определяют, какие аудиты выполняются и какие категории анализируются.
Пример кастомного конфига:
const customConfig = {
extends: 'lighthouse:default',
settings: {
onlyCategories: ['performance'],
throttling: {
rttMs: 150,
throughputKbps: 1600,
cpuSlowdownMultiplier: 4,
},
},
};
extends — позволяет наследовать стандартную
конфигурацию.settings.throttling — задаёт эмуляцию сети и
производительности процессора.audits.После выполнения анализа результат хранится в объекте
runnerResult.lhr. Основные свойства:
categories — оценки по категориям.audits — список всех аудитов с детальной информацией:
score, displayValue,
description.finalUrl — URL страницы после возможного
редиректа.Пример фильтрации ключевых аудитов:
const audits = runnerResult.lhr.audits;
console.log('First Contentful Paint:', audits['first-contentful-paint'].displayValue);
console.log('Largest Contentful Paint:', audits['largest-contentful-paint'].displayValue);
console.log('Accessibility score:', runnerResult.lhr.categories.accessibility.score * 100);
Отчёт можно сохранить в файл в формате HTML или JSON:
const fs = require('fs');
fs.writeFileSync('report.html', runnerResult.report); // HTML
fs.writeFileSync('report.json', JSON.stringify(runnerResult.lhr, null, 2)); // JSON
runnerResult.report содержит строковое представление
отчёта в выбранном формате.Lighthouse легко интегрируется в процессы CI/CD для мониторинга качества сайтов:
if (runnerResult.lhr.categories.performance.score < 0.9) {
throw new Error('Performance score below threshold');
}
thresholds) позволяет
автоматически отклонять сборки с низкой производительностью.Настройка эмуляции устройства и скорости сети критична для получения реалистичных результатов:
const options = {
emulatedFormFactor: 'mobile',
throttling: {
rttMs: 200,
throughputKbps: 1200,
cpuSlowdownMultiplier: 3,
},
};
emulatedFormFactor влияет на рендеринг страницы и
размер вьюпорта.throttling позволяет симулировать медленные соединения
и слабые устройства, выявляя реальные проблемы производительности.Прямое использование библиотеки в Node.js даёт полный контроль над запуском и обработкой результатов, что делает её удобной для интеграции в собственные инструменты анализа, создание дашбордов, генерацию отчётов для команд разработки и автоматического тестирования.
puppeteer для выполнения сложных
сценариев перед запуском аудита.