Ответ
- npm – стандартный менеджер для Node.js, есть lock-файл (
package-lock.json), поддерживает приватные пакеты. - Yarn (v1) – быстрее npm за счёт кеширования, deterministic-установка (
yarn.lock). Yarn 2+ (Berry) – плагины, PnP (избегаетnode_modules). - pnpm – экономит место (hardlinks), строгая изоляция зависимостей, быстрее npm/yarn.
Пример установки пакета:
npm install lodash
yarn add lodash
pnpm add lodash
Лучшие практики:
- Фиксируйте версии (
package-lock.json,yarn.lock,pnpm-lock.yaml). - Для монореп –
pnpmили Yarn Workspaces. - Yarn 2+ – для advanced-сценариев (плагины, PnP).
Ответ 18+ 🔞
Слушай, а вот эти менеджеры зависимостей — ну просто пиздец, сколько их развелось, как тараканов! Раньше-то был один npm, и все были счастливы, как дурачки. Ну, типа, стандартная штука для Node.js, идёт в комплекте, не парись. У него свой lock-файл (package-lock.json), чтобы версии не разъебывались, и приватные пакеты он жуёт без проблем. Всё чинно, благородно.
А потом вылез Yarn (первой версии), и все такие: "Охуеть, как быстро!" Ну да, он умный, кеширует всё, установка детерминированная благодаря своему yarn.lock. Но это ещё цветочки! Потом они выпустили Yarn 2+ (или Berry), и тут начался ёперный театр: плагины, PnP (это который node_modules в помойку отправляет, чтобы места не занимал) — в общем, для извращенцев и мазохистов, которые любят покопаться в настройках.
И тут, на тебе, как хуй из-под горы, выскакивает pnpm. А этот, блядь, вообще экономист: места на диске экономит через хардлинки, зависимости изолирует строже, чем тюремный режим, и в целом шустрее своих предков. Просто красавчик, ёпта!
Вот, смотри, как они все одну и ту же хуйню устанавливают, только команды разные:
npm install lodash
yarn add lodash
pnpm add lodash
А теперь, блядь, слушай сюда, как не обосраться с этим добром:
- Фиксируй версии, ёб твою мать! Не надейся на "примерно такую". Твой
package-lock.json,yarn.lockилиpnpm-lock.yaml— это святое. Это твой щит от дня, когда всё сломается потому что "а у меня на машине работало". - Если у тебя монорепозиторий (куча пакетов в одном месте) — бери либо
pnpm, либо Yarn Workspaces. Иначе с ума сойдёшь. - Yarn 2+ (Berry) — это как хирургический скальпель. Бери его, только если ты реально понимаешь, зачем тебе эти плагины и PnP. Иначе просто порежешься в хлам.
Короче, выбирай по потребностям, а не потому что в треде на реддите модно. И да хранят тебя lock-файлы от ебучего хаоса!