Введение

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

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

Менеджер пакетов не ограничивается только Node.js, на самом деле ОС, которую мы используем ежедневно, также использует менеджеры пакетов. Например.

Для MacOS мы используем менеджер пакетов brew. Точно так же для Ubuntu мы используем менеджер пакетов apt-get, а для Windows используем менеджер пакетов Winget или Chocolatey.

Краткая история менеджеров пакетов Node.

Node.js поставляется с менеджером пакетов NPM по умолчанию, то есть Node Package Manager. NPM является крупнейшим в мире реестром программного обеспечения и содержит более миллиона пакетов, которые ежедневно используются разработчиками JavaScript.

Существуют и другие менеджеры пакетов, такие как Yarn, представленный Meta в 2016 году. Затем у нас есть PNPM, то есть диспетчер пакетов Performance Node, выпущенный в 2017 году.

Вместе с npm, yarn и pnpm было представлено еще несколько менеджеров пакетов узлов, таких как tink и ied, но позже их поддержка была прекращена.

Все о файле package.json

Файл package.json является фундаментальной частью каждого проекта или приложения Node.js и используется всеми менеджерами пакетов, включая NPM, Yarn и PNPM. Файл служит манифестом вашего проекта и содержит метаданные о проекте и его зависимостях.

Вот пример того, как может выглядеть файл package.json

{
  "name": "my-node-project",
  "version": "1.0.0",
  "description": "A sample Node.js project",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "test": "jest"
  },
  "dependencies": {
    "express": "^4.17.13"
  },
  "devDependencies": {
    "@types/express": "^4.17.13"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

Вот некоторые из общих свойств, которые вы увидите в файле package.json.

  • name: Название вашего проекта и приложения.
  • version: Текущая версия проекта.
  • description: Краткое описание проекта.
  • main: основная точка входа в ваш проект. Обычно это первый файл, который выполняется для приложения.
  • scripts: это объект, который содержит все команды сценария, которые являются частью жизненного цикла приложения, такие как запуск приложения, сборка, тестирование и т. д.
  • dependencies: Это пакеты, которые необходимы для выполнения вашего приложения. Они устанавливаются с помощью npm install --save <package_name> express
  • devDependencies: Некоторые пакеты необходимы только для целей разработки. Они устанавливаются с использованием npm i --save-dev <package_name>, например, types@express
  • В файле package.json есть еще несколько полей, таких как keywords, author и license и т. д.

NPM (менеджер пакетов узлов)

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

Ключевая особенность

  • Установка пакетов и управление ими. Легко устанавливайте, обновляйте и удаляйте пакеты с помощью простых команд.
  • Разрешение зависимостей: автоматически разрешает и устанавливает зависимости пакетов.
  • Сценарии npm. Запускайте предопределенные сценарии для автоматизации таких задач, как сборка, тестирование и развертывание вашего приложения.
  • Семантическое управление версиями. Управляйте версиями пакетов с помощью семантического управления версиями, что упрощает контроль и обновление зависимостей.
  • Безопасность и аудит: сканирование проектов на наличие уязвимостей и автоматическое применение исправлений с помощью npm audit.

Примеры

Чтобы установить, обновить или удалить пакет с помощью NPM, просто выполните следующие команды:

# For installing a package
npm install <package_name>

# For updating a package
npm update <package_name>

# To removing a package
npm uninstall <package_name>

# To install all dependencies
npm install

Пряжа

Если вам нужно быстрое, надежное и безопасное управление зависимостями, yarn — лучший выбор.

Монтаж

Чтобы установить Yarn, мы можем использовать npm, который является менеджером пакетов Node.js по умолчанию. Хотя это тоже несколько альтернатив для установки Yarn. Давайте узнаем их ниже.

  • Использование npm: глобальная установка пакета yarn позволяет нам использовать его в разных проектах через командную строку.
  npm install --global yarn
  • Для macOS: мы можем установить его через Brew или curl. Давайте проверим команды, которые будут использоваться.
  # Using brew package manager
  brew install yarn

  # Using shell scripts like Curl
  curl -o- -L https://yarnpkg.com/install.sh | bash
  • Для Windows: вы можете установить его, запустив файл .msi, ссылка доступна здесь, или с помощью менеджера пакетов, такого как Chocolatey.
  choco install yarn

Все о файле yarn.lock

Файл yarn.lock создается или обновляется всякий раз, когда добавляются зависимости. Используя файл блокировки и детерминированный алгоритм установки, Yarn может гарантировать, что структура каталога node_modules одинакова во всех средах, будь то локальная машина разработки или производственный сервер.

Ключевая особенность

  • Быстро и эффективно: параллельные загрузки с автономным кэшированием и выборочным включением версий делают управление пакетами более эффективным.
  • Детерминированные установки: файлы yarn lock обеспечивают согласованную установку зависимостей в разных средах.
  • Рабочие области: простое управление несколькими пакетами в одном репозитории.
  • Улучшенная безопасность: применяется строгий SSL и контрольные суммы, что обеспечивает целостность загружаемых пакетов.
  • Совместимость: Yarn совместим с реестром NPM, что обеспечивает доступ к миллионам пакетов NPM.

Примеры

Чтобы установить пакет с помощью Yarn, выполните следующую команду:

# To add a new package 
yarn add <package_name>

# To update an already installed package
yarn upgrade <package_name>

# To remove a package
yarn remove <package_name>

# To install all dependencies for a project
yarn install

PNPM (менеджер пакетов производительных узлов)

Проще говоря, PNPM — это быстрый менеджер пакетов с эффективным использованием дискового пространства.

Монтаж

  • Использование npm: Чтобы установить PNPM, мы можем использовать npm, который является менеджером пакетов Node.js по умолчанию.
  npm install --global pnpm
  • @pnpm/exe упакован с Node.js в исполняемый файл, поэтому его можно использовать в системе без установленного Node.js.
npm install -g @pnpm/exe
  • Для macOS: мы можем установить его через Brew. Давайте проверим команды, которые будут использоваться. Используя менеджер пакетов brew:
brew install pnpm
  • Для Windows: вы можете установить с помощью диспетчера пакетов, например Chocolatey или Winget.
  # Using Chocolately
  choco install pnpm

  # Using winget
  winget install pnpm

Все о файле pnpm-lock

Как и другие менеджеры пакетов, PNPM также создает файл блокировки pnpm-lock.yaml при установке пакетов. Этот файл гарантирует, что каждая установка приводит к одному и тому же дереву зависимостей во всех средах.

Ключевая особенность

  • Эффективное хранилище пакетов: использует глобальное хранилище пакетов, экономя место на диске и сокращая время установки.
  • Строгое управление зависимостями: предотвращает случайное использование пакетов, которые явно не указаны в зависимостях вашего проекта.
  • Рабочие области: поддерживает монорепозитории и упрощает управление зависимостями для многопакетных проектов.
  • Кэши с адресацией содержимого. Обеспечивает неизменяемость и возможность кэширования пакетов, повышая производительность и безопасность.
  • При использовании npm, если у вас есть 100 проектов, использующих зависимость, у вас будет 100 копий этой зависимости, сохраненных на диске. При этом зависимость будет храниться в хранилище с адресацией по содержимому.

  • Совместимость: совместимость с реестром NPM и использование большинства инструментов, совместимых с npm.

Примеры

Чтобы установить, обновить или удалить пакет с помощью PNPM, выполните следующую команду:

# To add a new package 
pnpm add <package_name>

# To update an already installed package
pnpm update <package_name>

# To remove a package
pnpm remove <package_name>

# To install all dependencies for a project
pnpm install

Выбор правильного менеджера пакетов

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

  • Если вы отдаете предпочтение совместимости и поддержке обширной экосистемы, NPM — надежный выбор.
  • Если для вас важны скорость, безопасность и автономные возможности, обратите внимание на Yarn.
  • Если вас больше всего беспокоят дисковое пространство и эффективность установки, PNPM может быть лучшим вариантом.

Сравнение функций

Заключение

Менеджеры пакетов Javascript расширились, чтобы предложить разработчикам широкий выбор вариантов помимо NPM. В то время как NPM остается стандартом для многих, Yarn и PNPM также широко используются, каждый из которых имеет свои уникальные преимущества.

Выбор между NPM, Yarn и PNPM должен основываться на конкретных потребностях вашего проекта или команды.

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

Рекомендации

Первоначально опубликовано на https://blog.amanpreet.dev.