Lighthouse в JavaScript предоставляет мощный инструмент для аудита веб-страниц, позволяя выявлять проблемы с производительностью, доступностью, SEO и другими аспектами. Ключевым элементом эффективного использования Lighthouse является корректное управление конфигурациями и понимание их совместимости между различными версиями библиотеки.
В Lighthouse конфигурации делятся на несколько категорий:
lighthouse:default.performance,
accessibility, best-practices.Каждая конфигурация задается объектом JSON, где ключи
settings, categories, audits
управляют поведением Lighthouse.
Стандартная структура конфигурации выглядит так:
const config = {
extends: 'lighthouse:default',
settings: {
onlyCategories: ['performance', 'seo'],
throttling: {
rttMs: 150,
throughputKbps: 1600,
cpuSlowdownMultiplier: 4
},
maxWaitForFcp: 30000,
maxWaitForLoad: 45000
},
audits: [
'first-contentful-paint',
'speed-index'
],
categories: {
performance: {
title: 'Производительность',
description: 'Оценка производительности страницы',
auditRefs: [
{id: 'first-contentful-paint', weight: 3},
{id: 'speed-index', weight: 2}
]
}
}
};
Ключевой момент — использование свойства extends. Оно
позволяет создавать конфигурацию на основе другой, унаследовав все
настройки и при этом переопределяя отдельные параметры. Это облегчает
поддержку и обеспечивает совместимость с новыми версиями Lighthouse.
При обновлении библиотеки важно учитывать, что:
auditId вызовет ошибку.extends)
обеспечивает базовую совместимость, но требует проверки актуальности
всех пользовательских настроек.Для проверки совместимости рекомендуется использовать утилиту
lighthouse --print-config, которая выводит итоговую
конфигурацию после расширений и слияний. Это помогает выявить устаревшие
или конфликтующие параметры до запуска аудита.
Lighthouse поддерживает объединение нескольких конфигураций через
extends и глубокое слияние объектов:
const baseConfig = require('lighthouse/lighthouse-core/config/lr-config.js');
const customConfig = {
extends: baseConfig,
settings: {
onlyCategories: ['performance']
}
};
При этом сливаются все настройки settings,
audits и categories. Если в пользовательской
конфигурации указаны параметры с тем же именем, что в базовой, они
перезаписывают значения из базовой конфигурации.
Некоторые аудиторы имеют зависимости от других проверок. Например,
largest-contentful-paint зависит от наличия данных о
first-contentful-paint. Несоблюдение этих зависимостей
может привести к некорректным результатам или ошибкам при запуске.
Для контроля совместимости рекомендуется:
requiredArtifacts в каждом аудите.audits и categories с
документацией новой версии.extends на актуальную базовую
конфигурацию.Правильное управление совместимостью конфигураций снижает риск некорректных результатов аудита и упрощает миграцию между версиями библиотеки.
extends
обеспечивает гибкость и минимизирует необходимость переписывать
конфигурацию.Эти подходы формируют стабильную и предсказуемую работу Lighthouse в проектах любого масштаба.