Конфигурационные файлы в Lighthouse позволяют гибко управлять процессом аудита: выбирать категории проверок, задавать условия запуска, изменять поведение эмуляции, подключать собственные аудиты и плагины. Без конфигурации Lighthouse использует стандартный набор настроек, ориентированный на универсальные сценарии, однако для реальных проектов почти всегда требуется адаптация под конкретные задачи.
Конфигурация может задаваться:
Наиболее мощный и расширяемый способ — использование конфигурационного файла.
Конфигурация представляет собой JavaScript-объект, экспортируемый из файла. Базовая структура включает следующие ключевые поля:
module.exports = {
extends: 'lighthouse:default',
settings: {},
passes: [],
audits: [],
categories: {},
plugins: []
};
Поле extends позволяет использовать предопределённые
конфигурации Lighthouse:
extends: 'lighthouse:default'
Доступные варианты:
lighthouse:default — полный набор аудитовlighthouse:recommended — сокращённый наборlighthouse:no-pwa — без PWA-аудитовНаследование избавляет от необходимости вручную описывать все проверки.
Определяет глобальное поведение Lighthouse.
settings: {
onlyCategories: ['performance'],
throttlingMethod: 'simulate',
emulatedFormFactor: 'mobile',
locale: 'ru'
}
onlyCategories Ограничивает аудит определёнными категориями:
onlyCategories: ['performance', 'seo']
onlyAudits Позволяет запускать конкретные аудиты:
onlyAudits: ['first-contentful-paint']
skipAudits Исключает определённые аудиты:
skipAudits: ['uses-http2']
throttlingMethod Метод эмуляции сети:
simulate — симуляция (быстрее)devtools — реальное замедлениеemulatedFormFactor Тип устройства:
mobiledesktopnonethrottling Настройки сети:
throttling: {
rttMs: 150,
throughputKbps: 1600,
cpuSlowdownMultiplier: 4
}
Определяет, какие данные и как собираются во время аудита. Каждый pass — это отдельный проход по странице.
passes: [
{
passName: 'defaultPass',
gatherers: ['css-usage', 'js-usage'],
recordTrace: true,
useThrottling: true
}
]
Pass’ы позволяют точно контролировать этапы анализа.
Gatherers — это модули, собирающие данные из браузера. Они
используются в разделе passes.
Пример подключения:
passes: [
{
passName: 'customPass',
gatherers: [
require.resolve('./gatherers/my-gatherer')
]
}
]
Собранные данные затем используются аудитами.
Определяет список проверок, которые будут выполняться.
audits: [
'first-contentful-paint',
'largest-contentful-paint',
require.resolve('./audits/custom-audit')
]
Можно подключать:
Кастомный аудит — это класс, наследующий базовый аудит Lighthouse.
Пример:
class MyAudit {
static get meta() {
return {
id: 'my-audit',
title: 'Мой аудит',
failureTitle: 'Ошибка в аудите',
description: 'Описание проверки',
requiredArtifacts: ['MyArtifact']
};
}
static audit(artifacts) {
return {
score: 1,
numericValue: 100
};
}
}
module.exports = MyAudit;
Категории формируют структуру итогового отчёта.
categories: {
performance: {
title: 'Производительность',
auditRefs: [
{ id: 'first-contentful-paint', weight: 3 },
{ id: 'my-audit', weight: 1 }
]
}
}
Вес влияет на итоговый score категории.
Плагины позволяют расширять функциональность Lighthouse.
plugins: [
'lighthouse-plugin-publisher-ads'
]
Плагин может добавлять:
Конфигурационный файл можно передать через параметр:
lighthouse https://example.com --config-path=./lighthouse.config.js
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
const config = require('./lighthouse.config.js');
(async () => {
const chrome = await chromeLauncher.launch();
const result = await lighthouse('https://example.com', {
port: chrome.port
}, config);
await chrome.kill();
})();
Можно частично изменить стандартную конфигурацию:
module.exports = {
extends: 'lighthouse:default',
settings: {
onlyCategories: ['performance']
}
};
Или более гибко:
const defaultConfig = require('lighthouse/lighthouse-core/config/default-config');
module.exports = {
...defaultConfig,
settings: {
...defaultConfig.settings,
locale: 'ru'
}
};
Для крупных проектов конфигурацию удобно разбивать:
const settings = require('./config/settings');
const audits = require('./config/audits');
module.exports = {
extends: 'lighthouse:default',
settings,
audits
};
Можно динамически менять конфигурацию:
const isCI = process.env.CI === 'true';
module.exports = {
settings: {
throttlingMethod: isCI ? 'simulate' : 'devtools'
}
};
Оптимизация производительности:
settings: {
onlyCategories: ['performance']
}
SEO-аудит:
settings: {
onlyCategories: ['seo']
}
Тестирование конкретных метрик:
settings: {
onlyAudits: [
'largest-contentful-paint',
'cumulative-layout-shift'
]
}
Частые проблемы:
Для диагностики используется режим:
lighthouse https://example.com --verbose
extends вместо полной конфигурации с
нуляКомбинирование конфигураций:
const base = require('./base.config');
const perf = require('./perf.config');
module.exports = {
...base,
...perf
};
Интеграция в CI/CD:
Пороговые значения:
assert: {
assertions: {
'categories:performance': ['error', { minScore: 0.9 }]
}
}
Конфигурационные файлы Lighthouse выступают центральным инструментом настройки аудита, позволяя адаптировать проверки под архитектуру проекта, цели анализа и требования к качеству веб-приложения.