Совместимость конфигураций

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

Типы конфигураций

В Lighthouse конфигурации делятся на несколько категорий:

  1. Базовые конфигурации – предустановленные наборы настроек, предназначенные для стандартных аудитов, например lighthouse:default.
  2. Пользовательские конфигурации – позволяют адаптировать аудит под специфические требования проекта.
  3. Конфигурации аудиторов (audits) – включают или исключают определенные проверки, например проверку скорости загрузки или наличие мета-тегов.
  4. Конфигурации категорий (categories) – объединяют аудиторы в логические блоки, например 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.

Совместимость с версиями Lighthouse

При обновлении библиотеки важно учитывать, что:

  • Некоторые аудиторы могут быть удалены или переименованы. Попытка использовать устаревший auditId вызовет ошибку.
  • Параметры настроек могут изменяться. Например, throttling параметры в версии 9 отличаются от версии 10.
  • Расширение конфигураций (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 в каждом аудите.
  • При использовании пользовательских конфигураций тестировать результат на актуальной версии Lighthouse.

Практика обновления конфигураций

  1. Создать резервную копию текущей конфигурации.
  2. Сравнить ключи audits и categories с документацией новой версии.
  3. Обновить extends на актуальную базовую конфигурацию.
  4. Запустить тестовый аудит и проверить отчеты на ошибки.
  5. Исправить несовместимые параметры и повторить проверку.

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

Выводы по совместимости

  • Наследование через extends обеспечивает гибкость и минимизирует необходимость переписывать конфигурацию.
  • Регулярная проверка устаревших аудиторов и настроек предотвращает ошибки при обновлении версии Lighthouse.
  • Контроль зависимостей между аудиторами критичен для корректного расчета метрик.
  • Тестирование итоговой конфигурации до массового применения позволяет выявить скрытые конфликты.

Эти подходы формируют стабильную и предсказуемую работу Lighthouse в проектах любого масштаба.