Программная конфигурация

Установка и подключение

Для начала необходимо установить Lighthouse как npm-пакет:

npm install -g lighthouse

При использовании в Node.js проекте предпочтительно устанавливать его локально:

npm install --save-dev lighthouse

Подключение в коде осуществляется через стандартный require или import:

const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');

chrome-launcher используется для автоматического запуска экземпляра Chrome, необходимого для работы Lighthouse в программном режиме.


Запуск Lighthouse из кода

Для запуска аудита создаётся экземпляр Chrome и передаётся конфигурация в Lighthouse:

async function runLighthouse(url, options = {}, config = null) {
    const chrome = await chromeLauncher.launch({ chromeFlags: ['--headless'] });
    options.port = chrome.port;

    const results = await lighthouse(url, options, config);
    await chrome.kill();
    return results.lhr; // Lighthouse Report (JSON)
}

Ключевые моменты:

  • url — адрес страницы для аудита.
  • options — объект настроек (порт, формат отчёта, дополнительные флаги Chrome).
  • config — объект конфигурации аудита (кастомизация категорий, аудитов, настроек).

Настройка опций запуска

Объект options позволяет управлять поведением Lighthouse:

const options = {
    output: 'json',       // Формат отчёта: json или html
    onlyCategories: ['performance', 'accessibility'], // Выбор категорий аудита
    emulatedFormFactor: 'mobile', // Мобильная или десктопная эмуляция
    throttlingMethod: 'simulate', // Метод имитации сетевых условий
};

Выделенные моменты:

  • output влияет на тип создаваемого отчёта. При json можно использовать данные для анализа или интеграции в CI/CD.
  • onlyCategories позволяет запускать только нужные категории, ускоряя аудит.
  • emulatedFormFactor влияет на размеры экрана и сетевые условия.
  • throttlingMethod — «simulate» использует симуляцию, «devtools» работает с реальными инструментами Chrome.

Кастомная конфигурация аудита

Конфигурация позволяет детально управлять:

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

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

const customConfig = {
    extends: 'lighthouse:default',
    settings: {
        onlyCategories: ['performance', 'seo'],
        throttling: {
            rttMs: 150,
            throughputKbps: 1638.4,
            cpuSlowdownMultiplier: 4
        }
    },
    audits: [
        'first-meaningful-paint',
        'largest-contentful-paint'
    ]
};

Пояснения:

  • extends позволяет наследовать стандартные настройки.
  • settings.throttling задаёт сетевую задержку, пропускную способность и замедление CPU.
  • audits — список конкретных проверок, которые будут выполнены.

Работа с результатами аудита

Lighthouse возвращает объект отчёта (lhr) с обширной структурой. Основные поля:

{
    categories: {
        performance: { score: 0.92 },
        accessibility: { score: 0.85 },
        seo: { score: 0.78 }
    },
    audits: {
        'first-contentful-paint': { score: 0.9, numericValue: 1234 },
        'speed-index': { score: 0.8, numericValue: 4567 }
    },
    fetchTime: '2026-03-23T12:00:00.000Z'
}

Ключевые аспекты:

  • categories — итоговые оценки по направлениям.
  • audits — детальные метрики и рекомендации.
  • numericValue часто выражен в миллисекундах или килобайтах.
  • JSON-отчёт позволяет строить собственные визуализации и интегрировать данные в автоматические системы анализа качества.

Применение программной конфигурации

  1. CI/CD интеграция: автоматический аудит страниц при каждом деплое.
  2. Сбор метрик производительности: хранение результатов в базе данных для анализа динамики.
  3. Кастомизация аудитов под проект: включение только нужных категорий и пороговых значений.
  4. Эмуляция различных устройств: изменение emulatedFormFactor и throttling для тестирования мобильной и десктопной версии.

Рекомендации по структуре конфигурации

  • Создавать отдельные файлы для конфигураций под разные задачи (например, performance.config.js, seo.config.js).
  • Использовать наследование через extends для минимизации дублирования.
  • Хранить пороговые значения и параметры эмуляции в константах для удобного изменения.
  • Обрабатывать результаты аудита программно для построения графиков или автоматического уведомления при падении метрик.

Пример полного программного запуска с кастомной конфигурацией

(async () => {
    const url = 'https://example.com';
    const options = {
        output: 'json',
        logLevel: 'info',
    };
    const config = require('./performance.config.js');

    const result = await runLighthouse(url, options, config);

    console.log('Performance score:', result.categories.performance.score);
    console.log('First Contentful Paint:', result.audits['first-contentful-paint'].numericValue);
})();

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