Пресеты конфигураций

Библиотека Lighthouse предоставляет мощный механизм настройки аудитов через использование пресетов конфигураций. Пресеты позволяют задать заранее определённый набор правил, категорий и аудитов, что значительно упрощает запуск анализа для стандартных случаев или специфических сценариев.

Основные типы пресетов

Lighthouse поставляется с несколькими встроенными пресетами, каждый из которых оптимизирован под конкретную цель анализа:

  • lighthouse:default — стандартный набор аудитов, включающий все основные категории: производительность, доступность, лучшие практики, SEO и PWA. Используется для комплексного анализа страницы.
  • lighthouse:perf — пресет, фокусированный на производительности. Отключает аудиты, не относящиеся к скорости загрузки и интерактивности страницы.
  • lighthouse:seo — оптимизирован для проверки поисковой оптимизации. Включает только SEO-аудиты.
  • lighthouse:pwa — пресет для анализа прогрессивных веб-приложений, проверяет соответствие стандартам PWA.
  • lighthouse:accessibility — концентрируется на доступности интерфейса для пользователей с ограниченными возможностями.

Каждый из этих пресетов может использоваться как точка отправления для создания собственных кастомных конфигураций.

Структура пресета

Пресет в Lighthouse представляет собой объект конфигурации, содержащий следующие ключевые секции:

{
  extends: 'lighthouse:default',
  settings: {
    onlyCategories: ['performance', 'accessibility'],
    emulatedFormFactor: 'mobile',
    throttlingMethod: 'simulate'
  },
  audits: [
    'first-contentful-paint',
    'largest-contentful-paint',
    'accessibility/aria-roles'
  ],
  categories: {
    performance: { weight: 1.0 },
    accessibility: { weight: 0.5 }
  }
}
  • extends — позволяет наследовать настройки существующего пресета. Это основной механизм создания кастомных конфигураций без необходимости копировать все аудиты вручную.
  • settings — глобальные настройки запуска аудитов, включающие категории, форм-фактор, методы эмуляции сети и CPU.
  • audits — список аудитов, которые необходимо включить или изменить.
  • categories — настройки категорий, где можно изменить веса, порядок и видимость.

Настройка аудитов в пресете

Аудиты можно включать, отключать и настраивать их параметры:

  • Включение аудита — добавление идентификатора аудита в секцию audits.
  • Отключение аудита — удаление идентификатора из списка или установка флага disabled: true.
  • Настройка параметров аудита — через settings или через audits[].options. Пример:
audits: [
  {
    id: 'largest-contentful-paint',
    options: { maxNumericValue: 2500 }
  }
]

Наследование пресетов

Lighthouse поддерживает цепочку наследования, что позволяет создавать иерархию конфигураций. При этом:

  • Дочерняя конфигурация переопределяет параметры родителя.
  • Неизменённые параметры наследуются.
  • Это упрощает управление множеством конфигураций для разных проектов.

Пример наследования:

{
  extends: 'lighthouse:perf',
  settings: {
    throttlingMethod: 'devtools',
    onlyCategories: ['performance']
  }
}

Практические рекомендации по использованию пресетов

  1. Использовать встроенные пресеты как базу для кастомизации.
  2. Для CI/CD интеграции лучше выбирать узконаправленные пресеты (perf, seo) для ускорения анализа.
  3. Для комплексного анализа следует расширять lighthouse:default, изменяя только необходимые параметры.
  4. Настройки категории и аудитов должны быть согласованы с целью тестирования: например, для мобильной версии страницы важно эмулировать форм-фактор mobile и учитывать мобильную сеть.

Динамическое применение пресетов

Lighthouse позволяет применять пресеты программно через Node.js API:

import lighthouse from 'lighthouse';
import chromeLauncher from 'chrome-launcher';

const chrome = await chromeLauncher.launch({ chromeFlags: ['--headless'] });
const options = { port: chrome.port, configPath: './my-custom-config.js' };
const runnerResult = await lighthouse('https://example.com', options);
await chrome.kill();
  • configPath указывает путь к файлу с пресетом.
  • Можно использовать как встроенный пресет (extends: 'lighthouse:perf') или полностью кастомный.

Использование пресетов обеспечивает стандартизированный, повторяемый и масштабируемый подход к аудиту веб-приложений. Это особенно важно при анализе большого количества страниц или интеграции Lighthouse в автоматизированные пайплайны разработки.