Командная строка

Lighthouse — это инструмент для аудита веб-страниц, написанный на JavaScript, который анализирует производительность, доступность, SEO и лучшие практики. Одним из основных способов работы с Lighthouse является использование командной строки (CLI — Command Line Interface).

Для начала необходимо установить Lighthouse глобально через npm:

npm install -g lighthouse

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

Основная команда запуска

Базовая команда для запуска аудита выглядит так:

lighthouse https://example.com

По умолчанию Lighthouse генерирует отчет в формате HTML и выводит его в стандартный вывод терминала.

Ключевые параметры командной строки:

  • --output — формат отчета. Возможные значения: html, json, csv. Можно указать несколько через запятую:

    lighthouse https://example.com --output html,json
  • --output-path — путь для сохранения отчета:

    lighthouse https://example.com --output html --output-path ./report.html
  • --emulated-form-factor — эмулирует устройство: desktop, mobile или none. Например:

    lighthouse https://example.com --emulated-form-factor=mobile
  • --only-categories — позволяет запускать аудит только для конкретных категорий: performance, accessibility, best-practices, seo, pwa:

    lighthouse https://example.com --only-categories=performance,seo

Настройка аудитора через конфигурационный файл

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

Пример lighthouse-config.js:

module.exports = {
  extends: 'lighthouse:default',
  settings: {
    onlyCategories: ['performance', 'seo'],
    emulatedFormFactor: 'mobile',
    throttling: {
      rttMs: 150,
      throughputKbps: 1638,
      cpuSlowdownMultiplier: 4,
    },
  },
};

Запуск с использованием конфигурации:

lighthouse https://example.com --config-path=lighthouse-config.js

Аудит локального сайта

Для тестирования локальной среды можно использовать localhost. Необходимо убедиться, что сервер запущен и доступен по соответствующему порту. Например:

lighthouse http://localhost:3000 --output html --output-path ./local-report.html

Можно использовать флаг --chrome-flags="--headless" для запуска Chrome в безголовом режиме, что особенно важно для автоматизации:

lighthouse http://localhost:3000 --chrome-flags="--headless"

Интеграция с CI/CD

Lighthouse CLI идеально подходит для интеграции в процессы CI/CD, позволяя автоматически проверять качество сайта после каждого деплоя.

Примеры использования в скриптах CI:

lighthouse https://example.com --only-categories=performance,accessibility --output json --output-path ./ci-report.json

Затем отчет можно обработать скриптом на Node.js для сравнения метрик с предыдущими результатами и создания уведомлений о снижении производительности.

Полезные флаги для командной строки

  • --quiet — отключает вывод подробной информации в консоль.
  • --verbose — выводит детализированную отладочную информацию.
  • --disable-device-emulation — отключает эмуляцию устройства, что ускоряет аудит на десктопе.
  • --chrome-path — указывает путь к бинарнику Chrome, если используется нестандартная установка.
  • --throttling-method — задаёт метод ограничения скорости сети: simulate или devtools.

Автоматизация отчетов

Комбинирование флагов позволяет создавать комплексные отчеты для командной работы:

lighthouse https://example.com \
  --output html,json \
  --output-path ./reports/report.html \
  --only-categories=performance,seo \
  --chrome-flags="--headless --no-sandbox" \
  --quiet

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

Вывод Lighthouse через Node.js

Хотя CLI является отдельной программой, его можно использовать и как модуль Node.js для программного управления аудитами:

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

(async () => {
  const chrome = await chromeLauncher.launch({ chromeFlags: ['--headless'] });
  const options = { logLevel: 'info', output: 'html', port: chrome.port };
  const runnerResult = await lighthouse('https://example.com', options);

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

  await chrome.kill();
})();

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

Итоги работы с CLI

Использование Lighthouse через командную строку предоставляет полный контроль над процессом аудита: выбор категорий, форматов отчета, эмуляции устройств и сетевых условий. Это делает CLI универсальным инструментом для локального анализа, автоматизации и интеграции в процессы CI/CD, обеспечивая точные и воспроизводимые метрики веб-страниц.