Регистрация в конфигурации

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


Основная структура конфигурации

Конфигурация Lighthouse задаётся объектом, содержащим несколько ключевых свойств:

const config = {
  extends: 'lighthouse:default',
  settings: {},
  audits: [],
  categories: {},
  plugins: []
};
  • extends — наследование существующей конфигурации (например, 'lighthouse:default' или 'lighthouse:perf').
  • settings — объект с настройками запуска, включая throttling, локализацию, UA-строку и другие параметры.
  • audits — массив объектов или идентификаторов аудитов, которые будут выполняться.
  • categories — определение категорий аудитов и их веса.
  • plugins — подключение внешних плагинов для расширения функционала.

Ключевым моментом является возможность добавления новых аудитов и категорий без изменения исходного кода 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 определяет его значимость внутри категории.


Настройка категорий

Категории позволяют группировать аудиты для получения итоговой оценки. Каждая категория включает:

  • title — название категории
  • description — краткое описание
  • auditRefs — список аудитов с их весами

Пример расширенной категории:

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
}

Эти настройки применяются к любым зарегистрированным аудитам, включая пользовательские и плагинные.


Пошаговая регистрация

  1. Создать класс аудита с методами meta и audit.
  2. Импортировать аудит в объект конфигурации.
  3. Добавить аудит в массив audits и включить его в категорию через auditRefs.
  4. При необходимости подключить плагины через plugins.
  5. Настроить параметры анализа через settings.

Советы по организации больших конфигураций

  • Разделение на модули: хранить пользовательские аудиты и плагины в отдельных папках.
  • Использование extends: наследовать стандартные конфигурации и изменять только необходимые части.
  • Версионирование: поддерживать отдельные версии конфигурации для разных проектов или сред.
  • Документация внутри кода: описывать мета-данные аудитов и категорий для упрощения поддержки.

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