Для работы с библиотекой Lighthouse необходимо подготовить базовое окружение, включающее:
Проверка установленных версий:
node -v
npm -v
Lighthouse тесно интегрирован с движком Chrome, поэтому корректная работа напрямую зависит от доступности браузера в системе.
Глобальная установка позволяет использовать Lighthouse как CLI-инструмент:
npm install -g lighthouse
После установки доступна команда:
lighthouse https://example.com
Результатом выполнения станет HTML-отчёт с анализом производительности, доступности, SEO и других метрик.
Для интеграции в проект рекомендуется устанавливать Lighthouse как зависимость:
npm install --save-dev lighthouse
Такой подход обеспечивает:
После установки выполняется базовая проверка:
lighthouse --version
При корректной установке выводится текущая версия пакета.
Наиболее простой способ запуска:
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
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();
Ключевые моменты:
runnerResultДля работы через Node API требуется дополнительный пакет:
npm install chrome-launcher
Этот инструмент отвечает за:
Lighthouse поддерживает кастомные конфигурации:
lighthouse https://example.com --config-path=./lighthouse-config.js
Пример конфигурации:
export default {
extends: 'lighthouse:default',
settings: {
onlyCategories: ['performance'],
},
};
settings:
onlyCategories — выбор категорийemulatedFormFactor — эмуляция устройства (mobile,
desktop)throttling — настройки сети и CPUlocale — язык отчётаПример:
settings: {
emulatedFormFactor: 'mobile',
throttling: {
rttMs: 150,
throughputKbps: 1600,
cpuSlowdownMultiplier: 4,
},
}
Если Chrome не найден автоматически:
lighthouse https://example.com --chrome-path="/usr/bin/google-chrome"
По умолчанию Lighthouse использует headless-режим, но его можно отключить:
lighthouse https://example.com --chrome-flags="--disable-headless"
Это полезно для отладки визуальных проблем.
Lighthouse часто используется в автоматизированных пайплайнах.
npm install lighthouse chrome-launcher --save-dev
{
"scripts": {
"lighthouse": "lighthouse https://example.com --output=json --output-path=./report.json"
}
}
lighthouse https://example.com --chrome-flags="--no-sandbox"
Для продвинутой автоматизации используется отдельный инструмент:
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-path--no-sandbox
Решение:
project/
├── package.json
├── lighthouse/
│ ├── config.js
│ └── scripts/
│ └── run.js
├── reports/
│ └── report.html
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 часто используется вместе с:
Пример cron-задачи:
0 0 * * * lighthouse https://example.com --output-path=/reports/daily.html
Рекомендуется использовать:
Пример Docker-запуска:
docker run --rm -it \
--cap-add=SYS_ADMIN \
node:18 \
bash
После настройки окружения обеспечивается: