Для использования Lighthouse в проектах на JavaScript чаще всего
применяется пакет lighthouse, распространяемый через npm.
Установка производится командой:
npm install -g lighthouse
Ключевой момент: использование флага -g позволяет
запускать Lighthouse из командной строки глобально. Если требуется
использовать библиотеку внутри проекта, лучше установить её
локально:
npm install --save-dev lighthouse
Локальная установка гарантирует совместимость с конкретной версией Node.js и позволяет фиксировать зависимости проекта.
После установки проверка работоспособности производится командой:
lighthouse --version
Если команда возвращает номер версии, установка прошла успешно.
Lighthouse предоставляет полноценное Node.js API для интеграции с собственными скриптами и инструментами автоматизации. Основные шаги:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
async function launchChrome() {
return await chromeLauncher.launch({ chromeFlags: ['--headless'] });
}
async function runLighthouse(url, opts, config) {
const chrome = await launchChrome();
opts.port = chrome.port;
const result = await lighthouse(url, opts, config);
await chrome.kill();
return result.lhr; // Lighthouse Result Object
}
Пояснение:
opts содержит параметры запуска, например:
output, onlyCategories,
emulatedFormFactor.config — объект конфигурации Lighthouse, который
позволяет изменять категории аудита, настройки эмуляции и правила
аудита.'html',
'json').performance, accessibility,
best-practices, seo, pwa).'mobile' или 'desktop').Пример использования:
const opts = {
output: 'json',
onlyCategories: ['performance', 'seo'],
emulatedFormFactor: 'desktop'
};
runLighthouse('https://example.com', opts).then(result => {
console.log('Performance score:', result.categories.performance.score);
console.log('SEO score:', result.categories.seo.score);
});
Lighthouse поддерживает расширенные конфигурации, которые позволяют настраивать:
Пример базовой конфигурации:
const config = {
extends: 'lighthouse:default',
settings: {
onlyCategories: ['performance', 'accessibility'],
emulatedFormFactor: 'mobile',
throttlingMethod: 'simulate'
}
};
const express = require('express');
const app = express();
app.get('/audit', async (req, res) => {
const url = req.query.url;
const result = await runLighthouse(url, { output: 'json' });
res.json(result);
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
Такой подход позволяет создавать веб-сервисы для мгновенной оценки производительности и SEO-оптимизации страниц на лету.