Pull to refresh

Пожалуйста, начните использовать pnpm

Reading time1 min
Views50K

Я думаю, все, кто использует 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.

Теперь одна статья есть.

Tags:
Hubs:
+88
Comments120

Articles

Change theme settings