Установка и настройка окружения

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

  • Node.js версии не ниже 16 (рекомендуется LTS)
  • npm или альтернативный пакетный менеджер (yarn, pnpm)
  • Google Chrome или Chromium-браузер (используется для аудита)

Проверка установленных версий:

node -v
npm -v

Lighthouse тесно интегрирован с движком Chrome, поэтому корректная работа напрямую зависит от доступности браузера в системе.


Установка Lighthouse

Глобальная установка

Глобальная установка позволяет использовать Lighthouse как CLI-инструмент:

npm install -g lighthouse

После установки доступна команда:

lighthouse https://example.com

Результатом выполнения станет HTML-отчёт с анализом производительности, доступности, SEO и других метрик.


Локальная установка в проект

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

npm install --save-dev lighthouse

Такой подход обеспечивает:

  • контроль версии
  • воспроизводимость сборок
  • интеграцию с CI/CD

Проверка установки

После установки выполняется базовая проверка:

lighthouse --version

При корректной установке выводится текущая версия пакета.


Основные способы использования

CLI (Command Line Interface)

Наиболее простой способ запуска:

lighthouse https://example.com --output html --output-path ./report.html

Ключевые параметры:

  • --output — формат отчёта (html, json, csv)
  • --output-path — путь сохранения
  • --only-categories — выбор категорий анализа

Пример:

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

Программное использование (Node.js API)

Lighthouse можно использовать как библиотеку:

import lighthouse from 'lighthouse';
import chromeLauncher from 'chrome-launcher';

const runLighthouse = 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);

  console.log(runnerResult.lhr.categories.performance.score);

  await chrome.kill();
};

runLighthouse();

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

  • запуск Chrome происходит отдельно
  • Lighthouse подключается через порт
  • результат доступен в объекте runnerResult

Установка Chrome Launcher

Для работы через Node API требуется дополнительный пакет:

npm install chrome-launcher

Этот инструмент отвечает за:

  • запуск экземпляра Chrome
  • управление портами
  • конфигурацию режима работы (headless, флаги)

Конфигурация Lighthouse

Использование конфигурационных файлов

Lighthouse поддерживает кастомные конфигурации:

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

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

export default {
  extends: 'lighthouse:default',
  settings: {
    onlyCategories: ['performance'],
  },
};

Основные параметры конфигурации

settings:

  • onlyCategories — выбор категорий
  • emulatedFormFactor — эмуляция устройства (mobile, desktop)
  • throttling — настройки сети и CPU
  • locale — язык отчёта

Пример:

settings: {
  emulatedFormFactor: 'mobile',
  throttling: {
    rttMs: 150,
    throughputKbps: 1600,
    cpuSlowdownMultiplier: 4,
  },
}

Работа с Chrome

Указание пути к Chrome

Если Chrome не найден автоматически:

lighthouse https://example.com --chrome-path="/usr/bin/google-chrome"

Использование headless-режима

По умолчанию Lighthouse использует headless-режим, но его можно отключить:

lighthouse https://example.com --chrome-flags="--disable-headless"

Это полезно для отладки визуальных проблем.


Настройка окружения для CI/CD

Lighthouse часто используется в автоматизированных пайплайнах.

Установка в CI

npm install lighthouse chrome-launcher --save-dev

Пример скрипта

{
  "scripts": {
    "lighthouse": "lighthouse https://example.com --output=json --output-path=./report.json"
  }
}

Использование без sandbox (Linux CI)

lighthouse https://example.com --chrome-flags="--no-sandbox"

Lighthouse CI (LHCI)

Для продвинутой автоматизации используется отдельный инструмент:

npm install -g @lhci/cli

Инициализация:

lhci init

Запуск:

lhci autorun

Переменные окружения

Lighthouse может использовать переменные окружения:

  • CHROME_PATH — путь к браузеру
  • LHCI_GITHUB_APP_TOKEN — токен для интеграции с GitHub

Пример:

export CHROME_PATH=/usr/bin/google-chrome

Типичные ошибки установки

Chrome не найден

Решение:

  • указать --chrome-path
  • установить Chromium

Ошибка прав доступа (Linux)

--no-sandbox

Недостаточно памяти

Решение:

  • увеличить лимиты памяти
  • уменьшить количество аудитов

Оптимальная структура проекта

project/
├── package.json
├── lighthouse/
│   ├── config.js
│   └── scripts/
│       └── run.js
├── reports/
│   └── report.html

Рекомендации по настройке

  • использовать локальную установку для проектов
  • фиксировать версии зависимостей
  • применять кастомные конфигурации
  • запускать Lighthouse в headless-режиме в CI
  • сохранять отчёты в нескольких форматах (html + json)

Минимальный рабочий пример

npm init -y
npm install --save-dev lighthouse chrome-launcher
import lighthouse from 'lighthouse';
import chromeLauncher from 'chrome-launcher';

(async () => {
  const chrome = await chromeLauncher.launch();

  const result = await lighthouse('https://example.com', {
    port: chrome.port,
  });

  console.log(result.lhr.categories);

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

Расширенные настройки запуска

Пример с дополнительными параметрами:

const options = {
  port: chrome.port,
  output: ['html', 'json'],
  logLevel: 'info',
  onlyCategories: ['performance', 'accessibility'],
};

Хранение и анализ результатов

Lighthouse возвращает структуру:

result.lhr

Основные поля:

  • categories — итоговые оценки
  • audits — детализированные проверки
  • timing — время выполнения

Пример доступа:

const score = result.lhr.categories.performance.score;

Интеграция с другими инструментами

Lighthouse часто используется вместе с:

  • Webpack (через плагины)
  • CI/CD (GitHub Actions, GitLab CI)
  • мониторингом производительности

Автоматизация запуска

Пример cron-задачи:

0 0 * * * lighthouse https://example.com --output-path=/reports/daily.html

Изоляция окружения

Рекомендуется использовать:

  • Docker-контейнеры
  • виртуальные машины

Пример Docker-запуска:

docker run --rm -it \
  --cap-add=SYS_ADMIN \
  node:18 \
  bash

Подготовка к последующим этапам

После настройки окружения обеспечивается:

  • стабильный запуск аудитов
  • воспроизводимые результаты
  • возможность масштабирования анализа
  • интеграция в процессы разработки