NPM, пряжа и Pnpm

Всем привет,
Добро пожаловать в мой блог
🙏.
Я надеюсь, что вы все в безопасности и что этот блог найдет вас в добром здравии ️
🫶.

Прежде чем перейти к основной теме, давайте разберемся

Какова роль диспетчера пакетов во внешних проектах?

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

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

Установка пакетов вручную.
Разница в версии пакетов (несоответствие).
Удаление пакетов.

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

Разве это не сложно?
Диспетчер пакетов помогает разработчикам управлять всеми своими зависимостями и гарантирует, что они останутся на одной странице во время разработки проекта. Это автоматизирует

Установка...
Обновление…
Удаление пакетов.

Как обсуждалось в одном из блогов давным-давно. После установки любого пакета диспетчер пакетов создаст файл блокировки для защиты версии, чтобы никто не столкнулся с ситуацией, с которой столкнулись Боб и Джон. См. здесь

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

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

NPM — это официальный менеджер пакетов для NodeJ, т. е. если вы устанавливаете node, npm устанавливается автоматически. Это один из наиболее широко используемых менеджеров пакетов для всех современных фреймворков.
Он имеет экосистему, в которой вы можете публиковать свой код, делиться им с другими разработчиками и использовать их в проектах. В последнее время производительность NPM значительно улучшилась.
Он создает файл package.lock.json после установки пакетов и в следующий раз при каждом запуске пользователем
npm installон будет использовать этот файл блокировки и установит точные зависимости с теми же версиями (чтобы избежать проблем с Бобом и Джоном).

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

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

npx create-react-app

Пряжа

Yarn — это надежный менеджер пакетов с открытым исходным кодом для узловых приложений, являющийся альтернативой NPM. Для сравнения, у Yarn удобный интерфейс командной строки, чем у NPM, поскольку он предоставляет более подробную информацию о пакете.
Параллельная установка и глобальный кеш — два важных фактора, которые делают Yarn быстрее, чем NPM.
Хотя NPM сделал это. соответствующие улучшения, чтобы достичь этого, Yarn использует различные алгоритмы разрешения, а также агрессивно кэширует зависимости, что делает его быстрее. Хотя скорость не заметна, это зависит от проектов, которые вы используете.
Помимо скорости, пряжа также предоставляет
Plug’n’Play.

Plug and Play — это функция менеджера пакетов Yarn, позволяющая устанавливать зависимости без необходимости их записи на диск. Вместо этого PnP создает в памяти виртуальную файловую систему, которая представляет установленные вами пакеты и их зависимости.

Yarn также обеспечивает нулевую установку, которая позволяет запускать проект без установки пакетов.
Yarn также создает файл yarn.lock, который работает точно так же, как package.lock.json. . Как и NPM, Yarn также поддерживает выполнение динамического пакета, что позволяет использовать пакет без установки с помощью команды
yarn dlx.

ПНПМ

PNPM — еще один менеджер пакетов для проектов JavaScript. Это означает «быстрый и эффективный менеджер пакетов». Он позволяет устанавливать пакеты, управлять ими и использовать их.
PNPM хранит пакеты в едином глобальном хранилище на вашем компьютере и создает на них символические ссылки в папке node_modules каждого проекта. Это означает, что каждый пакет нужно загрузить и сохранить только один раз, что может сэкономить место на диске и ускорить время установки, а такое управление зависимостями отличает его от других менеджеров пакетов, таких как Yarn и NPM.
В отличие от Yarn, он не поддерживает нулевую установку, но поддерживает Plug'n'play.

Символические ссылки — это программные ссылки, используемые в качестве ссылок, которые перенаправляют вас на исходные пакеты.

PNPM также поддерживает динамическое выполнение пакетов с помощью командыpnpm dlx

Отличительные факторы менеджеров пакетов

Узнав о менеджерах пакетов, мы обнаружили две общие вещи: глобальное кэширование и параллелизм.

Глобальный кеш

Будь то NPM, Yarn или Pnpm, каждый диспетчер пакетов будет создавать глобальный кеш при первой установке пакета, что означает, что при каждой установке диспетчер пакетов будет обращаться к глобальному кешу, а не получать его напрямую. из реестра, что в конечном итоге экономит много времени. Это действительно поддерживает установку пакетов в автономном режиме.
Хотя глобальный кеш будет храниться в центральном каталоге локальной машины. Мы также можем настроить местоположение с помощью команды.

# NPM
npm config set cache {path}

# Yarn
yarn config set cacheFolder {path}

# Pnpm
pnpm config set store {path}

Параллелизм

Проще говоря, параллелизм означает одновременную установку нескольких пакетов. Yarn и PNPM поддерживают его по умолчанию. Хотя NPM устанавливает пакеты последовательно, он поддерживает параллелизм с помощью команды.

# NPM
npm install --max-parallel=4

Параллелизм и глобальный кэш вместе могут увеличить производительность диспетчера пакетов.

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

Начнем! Вот и все, ребята, для этого блога.
Я надеюсь, что всем понравился этот блог.
Если он вам понравился, хлопните 👏 ,
и поделитесь им со своим другом .

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

Большое спасибо всем 🙏.
До следующего раза,
Приятного обучения
📖✍

Абхишек Ковури, разработчик пользовательского интерфейса