Каждый раз, когда я открываю новый Node.js-проект и вижу npm install, у меня уже портится настроение. Не потому что инструмент плохой — npm сделал невероятно много для экосистемы. Но есть вещи, которые просто невозможно простить.
1. Lock-файлы ломаются при любом удобном случае
Вроде есть package-lock.json — должен гарантировать воспроизводимость сборки. На практике: один разработчик на Windows, другой на Mac, третий на Linux — и lock-файл превращается в простыню изменений, где непонятно, что реально поменялось, а что — артефакт ОС. npm ci иногда падает с ошибкой, которая лечится только удалением node_modules и переустановкой. В 2026 году. Серьёзно?
2. Peer-dependencies — вечная головная боль
Установил lodash? Отлично. Теперь npm хочет peer: react@^18.0.0, хотя твой проект вообще не про React. Ты либо игнорируешь предупреждение и получаешь молчаливые баги, либо устанавливаешь лишнее и раздуваешь bundle. Проблема peer-dependencies существует с 2016 года и, не решена.
3. Скорость — в 2026 году все ещё медленно
pnpm и yarn уже давно делают npm install за секунды. npm всё ещё качает всё последовательно, с кучей HTTP-запросов и без какого-либо кэширования между проектами. На Windows это особенно больно — иногда npm install занимает пять минут. Пять. Минут. На пустой проект.
4. Node_modules весит больше, чем весь проект
Типичный React-проект: исходный код 3 МБ, node_modules — 250 МБ. Двести пятьдесят мегабайт зависимостей, большинство из которых ты никогда не вызовешь напрямую. deduplicate не работает как ожидаешь, flat-режим создаёт дубликаты, и в итоге rm -rf node_modules && npm install — это не баг, а стандартный workflow.
5. Silent failures — npm не говорит правду
Устанавливаешь пакет, npm рапортует success, а на самом деле postinstall-скрипт упал. Или pkg скачался, но не тот. Или integrity checksum не совпал, но npm просто продолжил. Ты узнаёшь об этом через три дня, когда продакшен падает, а логов нет. Потому что npm их спрятал.
Я не призываю мигрировать с npm завтра. Это нереально — слишком много проектов зависят от него. Но знать об этих проблемах полезно. И держать pnpm или yarn в кармане — тоже.
Комментарии
Пока нет комментариев. Стань первым!