Для использования Lighthouse в проектах на JavaScript применяется
пакет lighthouse, который устанавливается через npm:
npm install -g lighthouse
Для программного использования подключается модуль:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
chrome-launcher необходим для запуска экземпляра Chrome,
в котором Lighthouse будет проводить аудит.
Для выполнения аудита создаётся отдельная функция, которая запускает Chrome и передаёт URL для анализа:
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 Result
}
options позволяет настроить режим работы: устройства,
скорости сети, дополнительные флаги.config — конфигурация аудита, в которой можно выбирать
категории, аудиты и их параметры.output: формат отчета (html,
json, csv).onlyCategories: массив категорий для анализа
(performance, accessibility,
best-practices, seo, pwa).emulatedFormFactor: эмуляция устройства
(mobile или desktop).Пример:
const options = {
output: 'json',
onlyCategories: ['performance', 'seo'],
emulatedFormFactor: 'mobile'
};
Результат выполнения Lighthouse содержит объект lhr, в
котором хранится подробная информация по всем аудитам:
const lhr = await runLighthouse('https://example.com', options);
console.log(`Performance score: ${lhr.categories.performance.score * 100}`);
console.log(`SEO score: ${lhr.categories.seo.score * 100}`);
Ключевые разделы объекта lhr:
categories — оценочные категории сайта.audits — детальные проверки, каждая содержит оценку,
рекомендации и метрики.fetchTime — время проведения аудита.finalUrl — URL, по которому выполнялся аудит.Конфигурационный объект позволяет управлять деталями анализа:
const config = {
extends: 'lighthouse:default',
settings: {
onlyAudits: ['first-contentful-paint', 'largest-contentful-paint'],
throttlingMethod: 'simulate'
}
};
extends позволяет наследовать стандартные настройки
Lighthouse.settings.onlyAudits ограничивает набор аудитов для
ускорения анализа.throttlingMethod управляет эмуляцией скорости сети и
процессора.(async () => {
const url = 'https://example.com';
const options = {
output: 'html',
onlyCategories: ['performance', 'accessibility'],
emulatedFormFactor: 'desktop'
};
const config = {
extends: 'lighthouse:default',
settings: {
onlyAudits: ['first-contentful-paint', 'accessibility/color-contrast']
}
};
const report = await runLighthouse(url, options, config);
require('fs').writeFileSync('report.html', report.report);
})();
В этом примере:
performance и
accessibility.onlyAudits.Lighthouse предоставляет не только оценки, но и подробные
рекомендации. Доступ к ним осуществляется через
lhr.audits:
for (const key in lhr.audits) {
const audit = lhr.audits[key];
if (audit.score !== 1) {
console.log(`${audit.title}: ${audit.displayValue}`);
}
}
score — числовая оценка (0–1).displayValue — человекочитаемое описание
результата.details — дополнительные данные, включая таблицы,
скриншоты и трассировки.Lighthouse через JavaScript позволяет программно контролировать процесс аудита, интегрировать его в автоматизацию и получать структурированные данные для улучшения производительности, доступности и SEO сайтов.