Время пробовать pnpm?
А вы заметили, что со всеми этими ии-движухами как-то морально проще стало экспериментировать с новым софтом и подходами в работе. Раньше ну узнаешь, что какая-то там либа вышла, ну подумаешь, что надо когда-нибудь попробовать, и всё на том. Ну максимум на свежем проекте или новом компе что-то свежее ставишь, пробуешь.
А теперь как-то реально попроще со всем этим стало: узнаёшь, сразу пробуешь, профит (наверное это можно назвать таблеткой от FOMO, правда хоть это и купирует приступы, но провоцирует повторные 😁).
Возможно на такой волне стоит присмотреться и к остальной экосистеме. Например, вот в pnpm подвели итоги прошлого года. В v10 много всего интересного.
Самое важное — pnpm перестал доверять всем пакетам. Раньше pnpm install давал любому пакету в дереве зависимостей запускать произвольный код (preinstall, postinstall). Это само собой создавало вектор атак через supply chain.
В v10 lifecycle scripts блокируются по умолчанию. Никакого preinstall/postinstall без явного разрешения.
allowBuilds: esbuild: true nx@21.6.4: trueЕщё одна фишка pnpm — content-addressable store (дедупликация файлов). В v10.12 сделали ещё шаг дальше — глобальное виртуальное хранилище.
pnpm-workspace.yamlenableGlobalVirtualStore: trueРаньше каждый проект имел свой node_modules. Теперь общие зависимости линкуются один раз глобально. А это:
- Экономия диска — одинаковые графы зависимостей шарятся между проектами.
- Быстрые установки — если 10 проектов используют
react@19, pnpm линкует его один раз из глобального хранилища на машине.
Для монорепозиториев и сложных настроек есть конфиги зависимостей. Это позволяет шарить конфиги pnpm (хуки, патчи, разрешения на билды) между проектами.
Конфиги зависимостей устанавливаются в node_modules/.pnpm-config до основного графа зависимостей.
configDependencies: pnpm-plugin-my-company: "1.0.0+sha512-..."Это помогает шарить .pnpmfile.cjs хуки между репозиториями, централизовать патчи для patchedDependencies, поддерживать список пакетов, которым разрешено запускать build скрипты.
Кроме того, pnpm давно умеет переключать версию Node.js для рантайма (не нужен nvm). В 2025 добавили Deno и Bun.
{ "devEngines": { "runtime": { "name": "node", "version": "24.6.0" } }}Pnpm сам скачает и будет использовать указанную версию для скриптов.
Поддержка JSR — тоже прикольно, но пока что не особо актуально, как я вижу.
Кроме того, ещё от себя добавлю, что в pnpm есть catalogs-алиасы (чтобы один раз в конфиге объявить набор зависимостей), workspaces (для организации монореп), возможность патчить зависимости (pnpm patch) и проверять их на актуальность (pnpm outdated)