Package Managers и Bundlers
Экспресс-шпаргалка 20/20
- npm/pnpm/yarn различаются стратегией хранения зависимостей, скоростью установки и удобством в монорепах.
- Lockfile фиксирует точное дерево зависимостей и обеспечивает воспроизводимые сборки.
npm ciставит строго по lockfile, быстрее и стабильнее для CI, чемnpm install.- Semver определяет совместимость версий, но диапазоны могут неожиданно подтянуть breaking changes.
- peerDependencies декларируют совместимость с хост-пакетом; конфликты требуют выравнивания версий.
- Workspaces позволяют централизованно управлять зависимостями и пакетами в монорепозитории.
- Обновление зависимостей делается поэтапно с changelog-review, тестами и rollback планом.
- Vite обычно быстрее в dev, Webpack часто гибче в сложных enterprise-конфигах.
- Tree shaking работает при ESM, корректных imports и правильном
sideEffects. - Code splitting разбивает бандл на чанки и снижает стартовую загрузку JS.
- Анализ бандла делают через visualizer/stats, чтобы найти тяжёлые или дублирующиеся зависимости.
- HMR м ожет ломаться из-за stateful side effects и нестабильных boundaries.
- Env-переменные в бандле нужно разделять на публичные и приватные, чтобы не утекали секреты.
- Source maps нужны для прод-диагностики, но доступ к ним надо ограничивать.
- CI ускоряют кэшированием, параллелизацией и уменьшением лишних шагов pipeline.
- Кэширование ассетов строится на content hash + immutable cache headers.
- Release pipeline включает quality gates: lint, typecheck, tests, build, smoke.
- Vulnerability management: регулярный аудит, patch policy и контроль транзитивных пакетов.
- Anti-patternы конфига: неуправляемые плагины, хаос alias/loaders и отсутствие budget.
- Миграция Webpack -> Vite делается поэтапно с проверкой build parity и метрик.
1. В чем разница npm, pnpm и yarn на практике?
Теги: tooling, build, package-manager
Сложность: Middle/Senior