Lighthouse — это инструмент для аудита веб-страниц, ориентированный на оценку производительности, доступности, SEO и прогрессивных веб-приложений. С течением времени некоторые функции библиотеки устаревают и заменяются более современными и эффективными методами. Понимание устаревших функций критично для поддержки существующих проектов и корректной миграции на новые версии API.
Функции в Lighthouse могут стать устаревшими по нескольким причинам:
lighthouse(url, flags, config)Ранее основной метод запуска аудита выглядел так:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
(async () => {
const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
const results = await lighthouse('https://example.com', {port: chrome.port}, null);
console.log(results.lhr);
await chrome.kill();
})();
Причина устаревания: параметр flags
больше не рекомендуется, так как новые версии Lighthouse используют
объект options с более гибкой структурой. Использование
старого метода может привести к непредсказуемым результатам при
обновлении Chrome или 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'};
const results = await lighthouse('https://example.com', options);
console.log(results.lhr);
await chrome.kill();
})();
auditResults.categoriesРанее доступ к категориям отчета выполнялся напрямую через объект
categories:
console.log(results.categories.performance.score);
Причина устаревания: структура объекта отчета была
изменена для унификации формата JSON и поддержки новых категорий. Прямой
доступ через categories может вызвать ошибки при парсинге
старых данных.
Современный подход:
const {categories} = results.lhr;
console.log(categories.performance.score);
first-contentful-paint,
speed-index)Некоторые метрики постепенно заменяются на более точные показатели, такие как Largest Contentful Paint (LCP) и Cumulative Layout Shift (CLS). Использование устаревших метрик снижает точность аудита и не учитывает современные требования Core Web Vitals.
Пример замены:
// Старый вариант
const fcp = results.lhr.audits['first-contentful-paint'].numericValue;
// Новый вариант
const lcp = results.lhr.audits['largest-contentful-paint'].numericValue;
Для корректного использования Lighthouse необходимо:
Lighthouse также выдает предупреждения о deprecated методах при запуске через командную строку или Node.js API. Эти предупреждения важно обрабатывать, чтобы заранее адаптировать код.
flags и auditResults.categories
без проверки актуальности.Хотите, я могу подготовить отдельный подробный блок таблицы соответствия устаревших и новых функций Lighthouse с примерами кода и миграции? Это будет полезно как справочник для учебника.