Lighthouse — это инструмент для аудита веб-приложений и сайтов, предоставляющий детальные отчёты о производительности, доступности, SEO, прогрессивных веб-приложениях (PWA) и других аспектах. Встроенные аудиторы проверяют множество метрик по умолчанию, однако для тонкой настройки анализа или исключения отдельных проверок используется конфигурация аудитов.
Lighthouse позволяет задавать конфигурацию через объект
lhrConfig или отдельный JSON-файл. Структура конфигурации
включает ключевые секции:
{
"extends": "lighthouse:default",
"settings": {
"onlyCategories": ["performance", "accessibility"]
},
"audits": [
"first-contentful-paint",
"largest-contentful-paint"
]
}
lighthouse:default или
lighthouse:full.Для управления отдельными аудитами можно использовать два подхода:
onlyAudits — выполняются только
выбранные аудиты:const config = {
extends: 'lighthouse:default',
settings: {
onlyAudits: ['first-contentful-paint', 'speed-index']
}
};
skipAudits — пропускаются
указанные аудиты, все остальные остаются активными:const config = {
extends: 'lighthouse:default',
settings: {
skipAudits: ['diagnostics', 'seo-meta-viewport']
}
};
Использование skipAudits удобно для ускорения проверки
при необходимости игнорировать метрики, которые не актуальны для
конкретного проекта.
Некоторые аудиты поддерживают передачу кастомных
настроек через audits или settings.
Например, аудит largest-contentful-paint-element позволяет
задать минимальный размер элемента для анализа:
const config = {
extends: 'lighthouse:default',
settings: {
auditConfigs: {
'largest-contentful-paint-element': {
minSize: 10000
}
}
}
};
Другие примеры настройки аудитов:
uses-rel-preconnect: указание допустимого числа
preconnect.speed-index: задание пользовательского порога для
оценки производительности.Каждый аудит в Lighthouse реализован как отдельный модуль с возможностью передачи опций через объект конфигурации, что позволяет полностью контролировать поведение тестов.
Для проектов, где часть аудитов не имеет смысла, полезно создавать кастомные конфигурации. Пример:
const customConfig = {
extends: 'lighthouse:default',
settings: {
onlyCategories: ['performance', 'seo'],
skipAudits: [
'accessibility',
'uses-responsive-images',
'font-display'
]
}
};
В таком случае запуск Lighthouse будет сосредоточен на производительности и SEO, исключая лишние проверки, что экономит ресурсы и ускоряет процесс анализа.
При использовании Lighthouse через Node.js можно передавать
конфигурацию напрямую при вызове функции lighthouse():
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
(async () => {
const chrome = await chromeLauncher.launch({ chromeFlags: ['--headless'] });
const options = { port: chrome.port, output: 'html', onlyCategories: ['performance'] };
const config = {
extends: 'lighthouse:default',
settings: {
skipAudits: ['unused-javascript', 'unused-css-rules']
}
};
const result = await lighthouse('https://example.com', options, config);
console.log(result.lhr.categories.performance.score);
await chrome.kill();
})();
Такой подход позволяет комбинировать исключение аудитов и запуск проверки только нужных категорий, обеспечивая максимальную гибкость.
Настройка отдельных аудитов в Lighthouse превращает инструмент из универсального в точно таргетированный, позволяя сфокусироваться на тех аспектах веб-приложения, которые имеют стратегическое значение.