Я думаю, все, кто использует node.js, понимает про что эта картинка.
npm - это ужасный менеджер пакетов. В этом признавался даже сам создатель node.js. Npm для каждого вашего проекта создает папку node_modules, в которую он качает из интернета и сохраняет на диске каждый пакет из всей иерархии зависимостей.
Если у вас 100 проектов с одними и теми же зависимостями, то npm 100 раз скачает из интернета и сохранит на диске 100 копий одних и тех же пакетов. Ему плевать. Популярный yarn, к сожалению, делает то же самое.
Но есть менеджер пакетов, который решает эту проблему, но который почему-то все еще не используют все разработчики.
Знакомьтесь - pnpm: https://pnpm.io/ru/
Что делает pnpm? Он делает то, что должен был делать npm с самого начала.
pnpm создает на вашем компьютере единый репозиторий (по крайней мере единый для вашего пользователя) npm-пакетов. Он создает контентно-адресуемую файловую-систему, как git. (Для тех кто не знает что это, поясню - каждый файл получает имя, равное хэшу от его содержания, а значит файлы с одинаковым содержанием никогда не повторяются дважды). После чего в папке node_modules он создает символические ссылки на эти файлы - вместо того чтобы их каждый раз копировать.
В результате, если у вас 100 проектов с одинаковыми зависимости - pnpm полезен в интернет и сохранит пакеты на диске только 1 раз. Остальные 99 раз он лишь создаст символические ссылки.
За счет этого он работает в разы быстрее что npm, что yarn, потребляет на порядки меньше интернет-трафика, да еще и надежнее - потому что он проверяет валидность пакетов через хэши.
Я правда не понимаю, почему на Хабре нет ни одной статьи про pnpm.
Теперь одна статья есть.
Автор: Свободнохабр