Package Managers и Bundlers
Для чего модуль
Построить стабильную систему зависимостей и сборки: чтобы проект предсказуемо собирался, быстро загружался и безопасно обновлялся.
Результат после прохождения
- Вы понимаете различия npm/pnpm/yarn и выбираете менеджер под контекст команды.
- Вы управляете lockfile-политикой и обновлениями зависимостей без хаоса.
- Вы проектируете стратегию бандлинга по пользовательским сце нариям.
- Вы контролируете bundle growth и supply-chain риски.
Термины и аббревиатуры
| Термин | Коротко |
|---|---|
Lockfile | Фиксация точных версий |
SemVer | Схема версий major/minor/patch |
Tree-shaking | Удаление неиспользуемого кода |
Code splitting | Разделение бандла |
CVE | Публичная уязвимость |
Фокус по грейдам
Junior: понимать базовые механики и объяснять их простыми примерами.Middle: применять тему в продуктовых сценариях с учетом рисков и ограничений.Senior: управлять архитектурными trade-offs, метриками и эволюцией решения.
Как работать с модулем
- На каждом уроке меняйте только один аспект и измеряйте эффект.
- Для каждой dependency/bundle правки фиксируйте риск и план отката.
- Ведите журнал изменений dependency policy и bundle budgets.
Программа модуля
Урок 1. Package management как инженерная система
Цель: сделать работу с зависимостями воспроизводимой и контролируемой.
npm vs pnpm vs yarn
- Storage model и скорость установки.
- Изоляция зависимостей и риск скрытых peer dependency проблем.
- Влияние на CI cache и developer workflow.
Lockfile discipline
- Lockfile коммитится всегда.
- Обновления зависимостей идут по понятному процессу.
- Для критичных обновлений есть owner и smoke-проверка.
Где ломается в проде
- Обновление версии «по пути» без проверки release notes.
- Разные менеджеры пакетов в одной команде.
- Broken installs из-за несовместимых peer dependencies.
Мини-задача (обязательная)
Опишите dependency policy: какие обновления автоматические, какие ручные, кто владелец, какой rollback.
Что спросит интервьюер: почему вы выбрали к онкретный package manager для команды.
Критерий готовности по уроку: вы можете объяснить зависимостную политику как часть reliability процесса.
Урок 2. Bundlers и стратегия загрузки
Цель: собирать код так, чтобы он быстро доставлялся пользователю и оставался поддерживаемым.
Стратегия чанкинга
- Entry/core/vendor boundaries.
- Route-based и component-based splitting.
- Предиктивная prefetch/preload стратегия.
Tree shaking и dead code control
- ESM как условие эффективного tree shaking.
- Избегать side-effectful imports.
- Анализировать реальные причины «толстого» bundle.
Где ломается в проде
- Один огромный initial chunk для всех маршрутов.
- Подключение тяжелых библиотек на критичном пути.
- Оптимизация «вслепую» без bundle analysis.
Мини-задача (обязательная)
Разбейте загрузку для 3 экранов и покажите: какие чанки грузятся сначала, какие позже и почему.
Что спросит интервьюер: как вы уменьшаете initial JS, не ломая функциональность.
Критерий готовности по уроку: вы можете обосновать стратегию чанкинга через UX и метрики загрузки.
Урок 3. Bundle governance и perf budgets
Цель: держать размер и стоимость бандла под контролем на длинной дистанции.
Что измерять
- Initial JS per route.
- Динамические chunks и долгосрочная кэшируемость.
- Влияние bundle size на LCP/INP и time-to-interactive.
Budgets и quality gates
- Budget пороги на route/chunk.
- CI-проверки превышений.
- Правила эскалации: когда блокируем merge/release.
Где ломается в проде
- Bundle растет «по чуть-чуть» и никто не замечает.
- Нет владельца за performance debt.
- Оптимизации точечные и не сохраняются в процессе.
Мини-задача (обязательная)
Внедрите bundle budget и подготовьте реакцию на превышение: кто смотрит, какие шаги, когда блокируется релиз.
Что спросит интервьюер: как вы управляете ростом бандла в команде из нескольких разработчиков.
Критерий готовности по уроку: вы можете показать governance-процесс, который реально удерживает bundle под контролем.
Урок 4. Безопасность и supply chain зависимостей
Цель: снизить риск уязвимостей и компрометации зависимостей.
Supply chain baseline
- Dependency audit и triage процесс.
- Политика для deprecated/unmaintained пакетов.
- Проверка лицензий и юридических ограничений.
Практика безопасных обновлений
- Небольшие регулярные обновления лучше редких «больших взрывов».
- Канареечный rollout для рискованных апдейтов.
- Возможность быстрого rollback версии.
Где ломается в проде
- Критичные CVE закрываются с большим лагом.
- Обновления делают без regression-check.
- Нет инвентаризации зависимостей и их owners.
Мини-задача (обязательная)
Соберите supply-chain checklist для релиза: audit, лицензии, owners, rollback plan.
Что спросит интервьюер: как вы балансируете скорость обновлений и рис к регрессий.
Критерий готовности по уроку: вы можете управлять зависимостями как риском, а не только как «списком пакетов».
Практика
- Зафиксируйте dependency policy и ownership матрицу.
- Проведите bundle analysis для критичных маршрутов и внедрите 2 оптимизации.
- Настройте bundle budgets с CI-проверкой.
- Проведите supply-chain аудит и оформите remediation план.
- Закрепите в Package Managers и Bundlers вопросах и Песочнице.
Связь с треками и вопросами
- Треки: Junior трек, Middle трек, Senior трек.
- Вопросы: Package Managers и Bundlers, Senior Frontend.
- Повторе ние: 3-5 вопросов без подсказок -> сверка с модулем -> повтор через 24 часа.
Критерий готовности
Вы защищаете стратегию package management и bundling через метрики, риски и процессы эксплуатации.
Артефакты после модуля
- Dependency policy документ.
- Bundle governance + budgets.
- Supply-chain checklist.
- Набор из 6 сильных interview-ответов по теме.