Pnpm что это
Перейти к содержимому

Pnpm что это

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

Я думаю, все, кто использует node.js, понимает про что эта картинка.

npm — это ужасный менеджер пакетов. В этом признавался даже сам создатель node.js. Npm для каждого вашего проекта создает папку node_modules, в которую он качает из интернета и сохраняет на диске каждый пакет из всей иерархии зависимостей.

Если у вас 100 проектов с одними и теми же зависимостями, то npm 100 раз скачает из интернета и сохранит на диске 100 копий одних и тех же пакетов. Ему плевать. Популярный yarn, к сожалению, делает то же самое.

Но есть менеджер пакетов, который решает эту проблему, но который почему-то все еще не используют все разработчики.

Что делает pnpm? Он делает то, что должен был делать npm с самого начала.

pnpm создает на вашем компьютере единый репозиторий (по крайней мере единый для вашего пользователя) npm-пакетов. Он создает контентно-адресуемую файловую-систему, как git. (Для тех кто не знает что это, поясню — каждый файл получает имя, равное хэшу от его содержания, а значит файлы с одинаковым содержанием никогда не повторяются дважды). После чего в папке node_modules он создает символические ссылки на эти файлы — вместо того чтобы их каждый раз копировать.

В результате, если у вас 100 проектов с одинаковыми зависимости — pnpm полезет в интернет и сохранит пакеты на диске только 1 раз. Остальные 99 раз он лишь создаст символические ссылки.

За счет этого он работает в разы быстрее что npm, что yarn, потребляет на порядки меньше интернет-трафика, да еще и надежнее — потому что он проверяет валидность пакетов через хэши.

�� Лучшие менеджеры пакетов Node.js для Linux

Node.js – один из самых популярных языков программирования, раскачивающий индустрию разработки программного обеспечения во всем мире.

При разработке и использовании приложений Node.js одним из распространенных программ, на которые разработчики и обычные пользователи всегда будут полагаться, является менеджер пакетов.

Менеджер пакетов Node.js взаимодействует с онлайн-репозиториями пакетов (которые содержат библиотеки, приложения и связанные с ними пакеты Node.js) и помогает во многих отношениях, включая установку пакетов и управление зависимостями.

Некоторые менеджеры пакетов также имеют компоненты управления проектами.

Например, если вы пишете веб-приложение и понимаете, что в общедоступном репозитории уже существует бесплатная внешняя библиотека, реализующая определенные функции в вашем приложении, вы можете использовать менеджер пакетов, чтобы установить его в своей системе в каталоге приложений и интегрировать в него. это с вашим приложением.

Менеджер пакетов также помогает указать библиотеку как зависимость для вашего приложения, так что любая система, в которой установлено приложение, будет также установлена ​​библиотека, чтобы приложение работало должным образом.

1. NPM – менеджер пакетов Node.js

npm не нуждается в представлении в экосистеме Node.js.

Но что такое npm?

На самом деле npm – это сочетание многих вещей – менеджер пакетов Node, реестр npm и клиент командной строки npm.

Во-первых, npm – это кроссплатформенный менеджер пакетов Node.js, который был разработан для того, чтобы помочь разработчикам JavaScript легко делиться своим кодом в виде пакетов.

Для установки и публикации пакетов разработчики используют клиент командной строки с именем npm, который также используется для управления версиями и зависимостями.

Он работает на Linux и других UNIX-подобных системах, Windows и macOS.

Кроме того, npm также является безопасным онлайн-репозиторием для публикации проектов Node.js с открытым исходным кодом, таких как библиотеки и приложения.

Это один из самых популярных и крупнейших реестров программного обеспечения с открытым исходным кодом в Интернете .

Вы можете использовать его бесплатно, так как есть опция, которая позволяет вам создавать публичные пакеты, публиковать обновления, проверять ваши зависимости и т.д.

Кроме того, вы можете подписаться на npm Pro, чтобы получить опыт разработки премиум-класса, который сопровождается многими преимуществами, такими как частные репозитории.

Большие группы разработчиков, работающие над критически важными для бизнеса проектами, могут выбрать npm Enterprise, который позволяет им разрабатывать внутренние пакеты, которые не являются общедоступными.

Клиент командной строки npm распространяется с пакетом Node.js, это означает, что когда вы устанавливаете Node.js в вашей системе Linux, вы также автоматически устанавливаете npm.

Интересно, что npm используется для установки всех других менеджеров пакетов Node.js, описанных ниже.

npm также поддерживает безопасность JavaScript, интегрируя npm со сторонними инструментами, такими как системы CI / CD (Continuous Integration / Continuous Delivery) и многое другое.

Чтобы установить последнюю версию Node.js и NPM в системах Linux, используйте команды в соответствующем дистрибутиве Linux.

Установка NPM на Debian и Ubuntu

Установка NPM на CentOS, RHEL и Fedora

2. Yarn – менеджер пакетов Node.js

Yarn является не только быстрым, безопасным, надежным менеджером пакетов с открытым исходным кодом, но и менеджером проектов для стабильных и воспроизводимых проектов.

Yarn работает везде: на Linux, Windows, macOS и других UNIX-подобных операционных системах, которые поддерживают Node.js.

Как менеджер пакетов, он позволяет вам делиться своим кодом через пакет с другими разработчиками по всему миру.

Таким же образом вы также можете использовать код других разработчиков в вашем приложении.

Yarn поддерживает рабочие пространства для небольших, средних и крупных монорепроектов, позволяя вам разделить ваш проект на подкомпоненты, хранящиеся в одном репозитории.

Еще одной ключевой особенностью Yarn является автономный кеш, который позволяет ему нормально работать даже при неработающей сети.

Yarn также поставляется с модульным API, который можно расширять с помощью плагинов.

Вы можете использовать официальные плагины или написать свои собственные.

Плагины могут использоваться для добавления новых функций, новых преобразователей, новых компоновщиков, новых команд, регистрации в некоторых событиях и могут быть интегрированы друг с другом. Кроме того, он оснащен API-интерфейсом Plug’n’Play (PnP), который позволяет вам анализировать дерево зависимостей во время выполнения.

Кроме того, Yarn также хорошо документирован, и некоторые ее функции все еще находятся в стадии разработки, такие как ограничения, рабочий процесс выпуска и «нулевая установка», что является скорее философией, чем функцией.

Чтобы установить последнюю версию Yarn в системах Linux, вам необходимо сначала установить Node.js в системе, а затем установить Yarn с помощью следующих команд в соответствующем дистрибутиве Linux.

Установка Yarn на Debian и Ubuntu

Установка Yarn на CentOS, RHEL и Fedora

3. Pnpm – менеджер пакетов Node.js

pnpm – это быстрый, эффективный с точки зрения дискового пространства менеджер пакетов с открытым исходным кодом.

Он кроссплатформенный, работает на Linux, Windows и macOS.

В отличие от npm и yarn, которые создают плоский каталог node_modules, pnpm работает немного иначе: он создает неплоский макет node_modules, который использует символические ссылки для создания вложенной структуры зависимостей.

Файлы внутри node_modules связаны из единого адресно-ориентированного репозитория.

Этот подход эффективен тем, что позволяет экономить гигабайты дискового пространства.

Подход non-flat node_modules также делает pnpm строгим, когда дело доходит до управления зависимостями, он позволяет пакету получать доступ только к зависимостям, указанным в его файле package.json.

Он также имеет встроенную поддержку рабочих пространств, что означает, что вы можете создать рабочее пространство для объединения нескольких проектов в одном репо.

Важно отметить, что pnpm может легко использоваться в различных приложениях CI, таких как Travis, Semaphore, AppVeypr и Sail CI. И вы можете настроить свой проект так, чтобы другие пользователи могли использовать только pnpm, но не другие менеджеры пакетов Node.js, описанные выше, например, когда кто-то пытается запустить «npm install» или «yarn install».

pnpm также поддерживает алиасы, которые позволяют устанавливать пакеты с пользовательскими именами, завершение табуляции в командной строке, и использует файл блокировки pnpm-lock.yaml.

Самый простой способ установить pnpm – использовать менеджер пакетов npm, как показано ниже:

What is pnpm?

Introduction to pnpm, the drop in npm replacement that saves you disk space

Published Feb 02 2019

I recently wrote about how we have huge node_modules folders and why this is not necessarily a bad thing, but it would be reduce that hard drive consumption, right?

Every byte saved on disk can be used for something else than libraries code, I have a 512GB SSD on my MacBook Pro I bought in 2010 but some brand new computers in 2019 ship with a 128GB SSD (something went wrong with Moore’s Law when it comes to hard disk space).

In particular, one way would be to centralize the libraries code storage into a central place, and share it with all the projects you work on.

This is the main value proposition of pnpm, a very cool project you can check out at https://pnpm.js.org.

It is basically a drop-in replacement for npm , which means that once you install it, you can invoke pnpm install to download a project dependencies, and all will work transparently for you.

If you have 10 projects that use React, at the same version, pnpm will install it once, and then reference that first install across all your other projects.

This also means that the project initialization part takes much less time than if it had to download resources using the standard npm procedure. It’s faster even if npm cached the package, because pnpm makes a hard link to the central local repository, while npm makes a copy of the package from the cache.

You install pnpm using npm , of course ��

Then being pnpm a drop-in replacement, you can use all the npm commands:

pnpm is especially appreciated in those companies where there is a need to maintain a large number of projects with the same dependencies.

For example Glitch is one of those companies, as they host a gazillion Node.js projects.

pnpm gives them, in addition to the npm usual commands, some utilities including pnpm recursive , which is used to run the same command across all the projects in a folder. For example you can initialize 100 projects stored in the current folder by running pnpm recursive install . Handy.

If you use npx , which is a handy (and the recommended) way to run utilities like create-react-app , you’ll get the benefits of pnpm by using the pnpx command which comes with pnpm :

Where are the packages installed? In macOS, in the

/.pnpm-store/ folder (where

means your home folder). I installed lodash as an example and this was the resulting folder structure:

There are many more advanced things to learn about the tool, but I hope this helps getting you started with pnpm !

Should you use it for a day-to-day use? Probably not, just stick to npm unless you have needs that this tool solves for you — lack of disk space being one of them.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *