Step2
September 5, 2022

Package Managers

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

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

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

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

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

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

Давайте рассмотрим лучшие менеджеры пакетов Node.js:

1. npm

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

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

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

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

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

Вы можете использовать его бесплатно, так как есть опция, которая позволяет вам создавать публичные пакеты, публиковать обновления, проверять ваши зависимости и т.д.Также есть два платных варианта – npm Pro, для получения преимуществ (напр. Частные репозитории) и npm Enterprise, который позволяет им разрабатывать внутренние пакеты, которые не являются общедоступными.

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

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

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

2. Yarn

Yarn - это система упаковки программного обеспечения, разработанная в 2016 году Facebook для Node.js. Yarn, являющийся альтернативой менеджеру пакетов npm, был создан в результате совместной работы Facebook, Exponent (ныне Expo.dev), Google и Tilde(компании, стоящей за Ember.js) для решения проблем согласованности, безопасности и производительности с большими кодовыми базами.

Сравнение с npm:

• Yarn может устанавливать пакеты из локального кэша.

• Yarn сильно связывает версии пакета.

• Yarn использует контрольную сумму для обеспечения целостности данных, в то время как npm использует SHA-512 для проверки целостности данных загружаемых пакетов.

• Yarn устанавливает пакеты параллельно, в то время как npm устанавливает по одному пакету за раз.

3. pnpm

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

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

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

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

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

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

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