В JavaScript-библиотеке Lighthouse регистрация в конфигурации представляет собой процесс добавления собственных плагинов, аудитов или категорий в основной объект конфигурации. Это позволяет расширять стандартный функционал Lighthouse, интегрировать специфические проверки или настраивать поведение анализа под конкретные требования.
Конфигурация Lighthouse задаётся объектом, содержащим несколько ключевых свойств:
const config = {
extends: 'lighthouse:default',
settings: {},
audits: [],
categories: {},
plugins: []
};
'lighthouse:default' или
'lighthouse:perf').Ключевым моментом является возможность добавления новых аудитов и категорий без изменения исходного кода Lighthouse.
Аудиты реализуются как классы с обязательными методами
meta и audit.
Пример структуры собственного аудита:
const { Audit } = require('lighthouse');
class CustomAudit extends Audit {
static get meta() {
return {
id: 'custom-audit',
title: 'Проверка пользовательского условия',
description: 'Этот аудит проверяет, выполняется ли заданное условие на странице',
requiredArtifacts: ['URL']
};
}
static audit(artifacts) {
const passed = artifacts.URL.includes('example');
return {
score: passed ? 1 : 0,
numericValue: passed ? 1 : 0
};
}
}
module.exports = CustomAudit;
После создания аудита его необходимо зарегистрировать в конфигурации:
const CustomAudit = require('./audits/custom-audit');
const config = {
extends: 'lighthouse:default',
audits: [CustomAudit],
categories: {
'custom-category': {
title: 'Пользовательские проверки',
description: 'Категория для пользовательских аудитов',
auditRefs: [
{ id: 'custom-audit', weight: 1 }
]
}
}
};
Важно: auditRefs ссылаются на
id аудита, а weight определяет его значимость
внутри категории.
Категории позволяют группировать аудиты для получения итоговой оценки. Каждая категория включает:
Пример расширенной категории:
categories: {
performance: {
title: 'Производительность',
description: 'Оценка скорости и отзывчивости сайта',
auditRefs: [
{ id: 'first-contentful-paint', weight: 3 },
{ id: 'largest-contentful-paint', weight: 5 },
{ id: 'custom-audit', weight: 2 }
]
}
}
Здесь пользовательский аудит интегрирован в стандартную категорию
performance, влияя на итоговую оценку.
Плагины предоставляют возможность подключения внешних модулей, которые могут добавлять новые аудиты, отчёты или изменять существующие данные.
Пример подключения плагина:
const MyPlugin = require('./plugins/my-plugin');
const config = {
extends: 'lighthouse:default',
plugins: [MyPlugin]
};
Структура плагина должна экспортировать объект с методом
audits и, при необходимости, categories:
module.exports = {
audits: [require('../audits/custom-audit')],
categories: {
'plugin-category': {
title: 'Категория плагина',
description: 'Аудиты, добавленные плагином',
auditRefs: [
{ id: 'custom-audit', weight: 1 }
]
}
}
};
settings для кастомной конфигурацииПараметры settings позволяют контролировать поведение
анализа:
settings: {
formFactor: 'desktop', // desktop или mobile
throttlingMethod: 'simulate', // simulate, devtools, provided
maxWaitForFcp: 15000, // максимальное время ожидания FCP
maxWaitForLoad: 45000
}
Эти настройки применяются к любым зарегистрированным аудитам, включая пользовательские и плагинные.
meta и
audit.audits и включить его в
категорию через auditRefs.plugins.settings.extends: наследовать
стандартные конфигурации и изменять только необходимые части.Регистрация в конфигурации обеспечивает гибкость Lighthouse, позволяя создавать персонализированные наборы аудитов, расширять функционал плагинами и управлять категориями и весами для точной оценки производительности и качества веб-страниц.