Stack Packs — это механизм расширения отчётов Lighthouse, предназначенный для предоставления специфичных рекомендаций, связанных с используемым стеком технологий на сайте. Основная цель Stack Packs — не просто показывать общие показатели производительности и доступности, а давать контекстные советы с учётом фреймворков, библиотек и платформ, применяемых на проекте.
Идентификация стека Lighthouse определяет технологический стек сайта на основе анализируемого HTML, скриптов и заголовков ответа сервера. Например, если на странице используется React, Vue или Angular, соответствующий Stack Pack подключается автоматически и добавляет рекомендации, специфичные для этих фреймворков.
Интеграция с отчетом Stack Packs не заменяют стандартные отчёты Lighthouse. Они добавляют дополнительные подсказки к существующим аудиту, например:
Формат и структура Stack Pack представлен в виде JSON-файла с ключевыми полями:
id: уникальный идентификатор Stack Pack.title: название стека или фреймворка.description: краткое описание назначений
рекомендаций.audits: массив конкретных рекомендаций, привязанных к
идентификаторам аудитов Lighthouse.links: ссылки на документацию и ресурсы для
углублённого изучения.Пример структуры одной рекомендации внутри Stack Pack:
{
"auditId": "unused-javascript",
"title": "Удалите неиспользуемый JavaScript",
"description": "В React-приложениях часто загружается код компонентов, которые не используются на странице. Удаление таких модулей уменьшает время загрузки.",
"urls": [
"https://reactjs.org/docs/code-splitting.html"
]
}1. Оптимизация производительности Stack Packs дают конкретные шаги для ускорения сайта с учётом используемой технологии:
React.lazy и динамический
импорт.Ahead-of-Time (AOT) компиляции и
ленивой загрузки модулей.2. Улучшение доступности и SEO Некоторые Stack Packs включают рекомендации по улучшению доступности для конкретных фреймворков:
aria-атрибутов в Vue для динамических
компонентов.3. Повышение безопасности и надежности Stack Packs могут содержать указания на безопасные практики:
Lighthouse автоматически включает стандартные Stack Packs для популярных технологий, но разработчики могут:
Пример подключения кастомного Stack Pack через Node.js API Lighthouse:
const lighthouse = require('lighthouse');
const customStackPacks = require('./my-stack-pack.json');
const flags = { output: 'json' };
const config = {
extends: 'lighthouse:default',
stackPacks: customStackPacks
};
lighthouse('https://example.com', flags, config).then(results => {
console.log(results.lhr.stackPacks);
});
Stack Packs превращают стандартный анализ Lighthouse из универсального отчета в целенаправленный инструмент оптимизации, учитывающий специфику каждой технологии. Они обеспечивают точные, контекстные рекомендации, позволяя разработчикам не тратить время на общие советы и сосредоточиться на тех улучшениях, которые действительно влияют на производительность, доступность и безопасность проекта.