Lighthouse — это инструмент для анализа производительности, доступности, SEO и других аспектов веб-страниц. Для реализации периодического мониторинга важно понимать, как автоматизировать запуск проверок, собирать результаты и интерпретировать их в динамике.
Для работы с Lighthouse в Node.js используется пакет
lighthouse. Его установка производится через npm:
npm install -g lighthouse
При использовании программного API необходимо подключить пакет внутри проекта:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
Для запуска анализа требуется Chrome или Chromium в режиме без
интерфейса пользователя. Это достигается с помощью
chrome-launcher:
async function launchChrome() {
return await chromeLauncher.launch({chromeFlags: ['--headless']});
}
Для периодического мониторинга необходимо организовать регулярный
запуск анализа. Наиболее распространённые варианты — использование
cron на сервере или встроенных таймеров в Node.js
(setInterval). Пример с использованием асинхронной
функции:
async function runLighthouse(url) {
const chrome = await launchChrome();
const options = {port: chrome.port, output: 'json', logLevel: 'info'};
const runnerResult = await lighthouse(url, options);
await chrome.kill();
return runnerResult.lhr;
}
setInterval(async () => {
const report = await runLighthouse('https://example.com');
console.log('Performance score:', report.categories.performance.score);
}, 24 * 60 * 60 * 1000); // запуск раз в сутки
Ключевые моменты:
output: 'json' позволяет сохранять результаты в
формате, удобном для дальнейшей обработки.logLevel: 'info' помогает отслеживать процесс
анализа.Результаты анализа включают метрики производительности, доступности, SEO, best practices и PWA. Для систематического мониторинга их лучше сохранять в базе данных или в файловой системе:
const fs = require('fs');
async function saveReport(lhr) {
const timestamp = new Date().toISOString();
fs.writeFileSync(`./reports/lighthouse-${timestamp}.json`, JSON.stringify(lhr, null, 2));
}
Такой подход обеспечивает возможность анализа динамики показателей по времени.
Lighthouse возвращает структурированный объект lhr
(Lighthouse Result), содержащий категории и показатели. Основные
категории:
performance — скорость загрузки и интерактивность.accessibility — доступность для пользователей с
ограниченными возможностями.best-practices — соблюдение современных стандартов
веб-разработки.seo — оптимизация под поисковые системы.pwa — соответствие принципам прогрессивных
веб-приложений.Каждая категория включает:
Для анализа динамики удобно строить графики изменения
score по времени. Визуализация позволяет быстро выявлять
деградацию производительности или доступности.
Lighthouse поддерживает кастомные конфигурации аудитов и категорий:
const config = {
extends: 'lighthouse:default',
settings: {
onlyCategories: ['performance', 'seo'],
throttling: {
rttMs: 150,
throughputKbps: 1638
}
}
};
Использование кастомной конфигурации позволяет:
Для оперативного реагирования на деградацию показателей можно подключить уведомления через e-mail, Slack или систему логирования:
if (report.categories.performance.score < 0.8) {
sendAlert('Performance score ниже допустимого уровня!');
}
Такой механизм помогает обнаруживать проблемы на ранних стадиях и поддерживать стабильное качество сайта.
Эффективная реализация периодического мониторинга с Lighthouse обеспечивает объективное измерение качества сайта и позволяет принимать решения на основе количественных данных, минимизируя субъективные оценки.