Параметры и опции

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


Основной вызов функции lighthouse

Функция lighthouse принимает два обязательных аргумента и один опциональный:

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

(async () => {
  const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
  const options = {
    port: chrome.port,
    output: 'json',
    logLevel: 'info',
  };
  const runnerResult = await lighthouse('https://example.com', options);
})();
  • url — строка с адресом страницы для аудита.
  • options — объект конфигурации, включающий параметры порта, формат вывода и уровень логирования.
  • config — объект или путь к конфигурационному файлу, определяющему категории и аудиты.

Основные параметры объекта options

1. port Определяет порт для подключения к экземпляру Chrome. Обычно используется вместе с chrome-launcher.

port: 9222

2. output Формат вывода результатов. Поддерживаются значения:

  • 'html' — генерирует отчет в HTML.
  • 'json' — возвращает результат в JSON.
  • 'csv' — вывод в формате CSV.

Можно указать массив форматов:

output: ['html', 'json']

3. logLevel Определяет уровень логирования:

  • 'info' — стандартная информация о ходе выполнения.
  • 'error' — только ошибки.
  • 'silent' — отключает вывод логов.
  • 'verbose' — максимально подробные логи.

4. onlyCategories Позволяет ограничить аудит определенными категориями:

onlyCategories: ['performance', 'accessibility']

Допустимые категории: 'performance', 'accessibility', 'best-practices', 'seo', 'pwa'.

5. maxWaitForFcp и maxWaitForLoad Устанавливают максимальное время ожидания событий First Contentful Paint и полной загрузки страницы. В миллисекундах.

maxWaitForFcp: 15000,
maxWaitForLoad: 35000

6. throttling Позволяет симулировать сетевые условия и производительность устройства. Объект содержит параметры:

throttling: {
  rttMs: 150,          // задержка сети
  throughputKbps: 1638, // пропускная способность
  cpuSlowdownMultiplier: 4
}

7. emulatedFormFactor Задает форму устройства для эмуляции:

  • 'mobile'
  • 'desktop'

Эта опция влияет на размеры экрана, сетевое соединение и CPU throttling, если не заданы вручную.

8. disableStorageReset Если true, Lighthouse не очищает локальное хранилище, IndexedDB и cookies перед аудитом.


Конфигурация аудита через объект config

Конфигурация позволяет детально настраивать категории, аудиты и даже отдельные сцены (gatherers):

const config = {
  extends: 'lighthouse:default',
  settings: {
    onlyCategories: ['performance'],
    maxWaitForLoad: 45000,
    emulatedFormFactor: 'desktop',
  },
  audits: ['first-meaningful-paint', 'speed-index'],
};
  • extends — базовая конфигурация, которую можно расширить.
  • settings — глобальные настройки, включающие throttling, таймауты и форм-фактор.
  • audits — массив аудитов для выполнения.
  • categories — позволяет создавать свои категории или изменять существующие.

Использование пользовательских параметров логирования

Для отладки удобно использовать функции обратного вызова и настройку уровня логирования:

const options = {
  logLevel: 'verbose',
  output: 'json',
  port: 9222,
};

const runnerResult = await lighthouse('https://example.com', options);
console.log('Performance score:', runnerResult.lhr.categories.performance.score * 100);

Ключевой момент: все параметры options и config влияют на результат аудита, поэтому их корректная настройка критична для получения точных данных.


Работа с отчетами

Результат runnerResult содержит:

  • lhr — Lighthouse Result Object с подробными данными аудита.
  • report — строка с отчетом в указанном формате (json или html).

Пример сохранения отчета:

const fs = require('fs');
fs.writeFileSync('report.html', runnerResult.report);

Расширенные параметры

  • extraHeaders — объект дополнительных HTTP-заголовков при запросе страницы.
  • blockedUrlPatterns — массив строк или регулярных выражений для блокировки ресурсов.
  • disableDeviceEmulation — отключает эмуляцию мобильного устройства.
  • precomputedLanternData — позволяет подгружать предварительно собранные данные для ускорения анализа.

Эти параметры полезны для интеграции Lighthouse в CI/CD или при тестировании страниц с динамическим контентом.


Итог по опциям

  • options управляют общими параметрами запуска и форматом отчетов.
  • config задает глубину и содержание аудита, включая категории, отдельные проверки и gatherers.
  • Тщательная настройка этих объектов позволяет оптимизировать производительность анализа, уменьшить время выполнения и получить наиболее релевантные данные для конкретного проекта.

Настройка параметров и опций — ключ к использованию Lighthouse как профессионального инструмента аудита в JavaScript.