Lighthouse предоставляет гибкий механизм настройки анализа веб-страниц с помощью кастомных конфигураций. Это позволяет управлять аудитами, категориями, настройками среды выполнения и параметрами отчёта, создавая уникальные сценарии тестирования.
Конфигурация Lighthouse хранится в виде JavaScript-объекта. Основные поля объекта:
extends — массив или строка,
указывающая на базовую конфигурацию, от которой наследуется
текущая.settings — объект с настройками
выполнения аудита (например, эмуляция устройств, таймауты,
локализация).audits — список конкретных проверок,
которые необходимо включить или исключить.categories — определение категорий
аудита и их веса.groups — логическая группировка
аудитов внутри категорий.Пример минимальной кастомной конфигурации:
module.exports = {
extends: 'lighthouse:default',
settings: {
emulatedFormFactor: 'desktop',
onlyAudits: ['first-contentful-paint', 'interactive'],
},
categories: {
performance: {
title: 'Производительность',
description: 'Метрики скорости и отзывчивости страницы',
auditRefs: [
{id: 'first-contentful-paint', weight: 3},
{id: 'interactive', weight: 5}
]
}
}
};
Объект settings контролирует поведение Lighthouse при
запуске аудита:
emulatedFormFactor —
'mobile' или 'desktop', влияет на размеры
экрана и параметры сети.throttlingMethod — метод ограничения
скорости сети: 'simulate' (эмуляция) или
'devtools' (реальное ограничение в DevTools).onlyAudits / skipAudits —
массивы с идентификаторами аудитов, которые необходимо включить или
исключить.locale — язык вывода отчёта, например
'ru'.maxWaitForLoad — максимальное время
ожидания загрузки страницы.Пример настройки для мобильного анализа с ограничением сети и процессора:
settings: {
emulatedFormFactor: 'mobile',
throttling: {
rttMs: 150,
throughputKbps: 1638,
cpuSlowdownMultiplier: 4
},
maxWaitForLoad: 45000
}
Аудиты можно включать, исключать и комбинировать:
onlyAudits — запуск исключительно
указанных проверок.skipAudits — пропуск определённых
аудитов, оставляя остальные.Пример использования только выбранных аудитов:
settings: {
onlyAudits: [
'first-meaningful-paint',
'speed-index',
'interactive'
]
}
Категории группируют аудит-результаты для удобного анализа. В конфигурации можно изменить:
title — название категории.description — описание категории.auditRefs — список аудитов с указанием
веса (weight) и группы (group).Пример кастомной категории для производительности:
categories: {
performance: {
title: 'Скорость загрузки',
description: 'Основные метрики быстродействия страницы',
auditRefs: [
{id: 'first-contentful-paint', weight: 3},
{id: 'speed-index', weight: 4, group: 'metrics'},
{id: 'largest-contentful-paint', weight: 5, group: 'metrics'}
]
}
}
Группы (groups) помогают логически объединять аудиты
внутри категории:
groups: {
metrics: {
title: 'Метрики страницы',
description: 'Время загрузки и интерактивность'
},
opportunities: {
title: 'Возможности оптимизации',
description: 'Рекомендации для ускорения страницы'
}
}
Использование групп позволяет настраивать отчёт более структурированно, выделяя метрики и рекомендации отдельно.
Поле extends упрощает создание конфигураций на основе
стандартных шаблонов:
extends: 'lighthouse:default'
Можно наследовать одну или несколько конфигураций и переопределять только необходимые поля:
extends: ['lighthouse:default', 'lighthouse:perf']
При наследовании новые определения категорий, аудитов или настроек заменяют или дополняют базовые.
Для запуска Lighthouse с кастомной конфигурацией используется Node.js API:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
const config = require('./my-lighthouse-config.js');
(async () => {
const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
const options = {port: chrome.port};
const result = await lighthouse('https://example.com', options, config);
console.log(result.lhr.categories.performance.score);
await chrome.kill();
})();
Использование конфигураций через API позволяет полностью контролировать параметры аудита, интегрировать Lighthouse в CI/CD и генерировать отчёты в различных форматах.
Эта гибкость позволяет создавать адаптированные сценарии анализа страниц, ориентированные на конкретные бизнес-цели и требования к производительности.