Пакетные менеджеры – это инструмент языка программирования для создания сред проекта и простого импорта внешних зависимостей. Вам не нужно изобретать велосипед, и вы можете максимально использовать имеющиеся в вашем распоряжении инструменты. При работе над проектом или библиотекой вы можете «упаковать» свой проект и опубликовать его для других.
Вы можете указать зависимости, имя пакета, автора, теги и номер версии. Все это помогает онлайн-репозиториям хранить ваш пакет и позволяет другим найти ваш проект. Кроме того, позволяя вам создавать свои собственные пакеты, разработчики вынуждены думать о том, как их пакет будет использоваться и реализовываться, что позволяет создавать более качественные и пригодные для повторного использования пакеты.
Без современных пакетных менеджеров вам понадобится современный инструмент для объединения ваших пакетов после их выпуска. Вы также столкнетесь с проблемами, когда захотите обновить свои пакеты до последних версий. Это будет достаточно сложно для больших проектов со многими пакетами. Пакетные менеджеры упрощают работу с пакетами. Они автоматизируют большинство задач, связанных с использованием пакетов во время разработки.
В категорию пакетных менеджеров языкового уровня входят npm, yarn, pip, go mod, maven, gradle, wapm. Также есть менеджеры пакетов системного уровня, такие как apt-get, yum, dnf, apk. Но сегодня мы поговорим только о двух таких пакетных менеджерах: nuget и npm.
NuGet
NuGet – это диспетчер пакетов, поддерживающий проекты, созданные с использованием платформы .NET. Например, проекты, написанные на C#. NuGet входит в состав установки Visual Studio, наиболее распространенной интегрированной среды разработки для написания кода .NET. Он также может быть добавлен в качестве расширения к популярному редактору кода Visual Studio.
При использовании в Visual Studio разработчики просматривают пакеты с помощью инструмента поиска в диспетчере пакетов NuGet. Общедоступные пакеты извлекаются из репозитория NuGet, и разработчики также указывают частные репозитории.
В Visual Studio разработчики могут использовать NuGet для изучения пакетов через графический интерфейс пользователя, хотя у них также есть возможность взаимодействовать и с помощью интерфейса командной строки. Разработчики могут видеть имена, версии и описания того, что делает каждый пакет, прежде чем решить, какие пакеты установить в свой проект.
NuGet отслеживает зависимости проекта в файле packages.config проекта, файле формата XML, в котором перечислены идентификатор каждой зависимости и номер версии. В отличие от npm, NuGet позволяет включать в каждый проект только одну версию зависимости, и диспетчер пакетов автоматически разрешает любые конфликты версий.
Пакетный менеджер узлов (NPM)
Управление пакетами никогда не касалось только NuGet. Если вы разработчик, работающий с node.js, JavaScript или любым из его вариантов, вы можете использовать Team Services для размещения частных пакетов npm рядом с вашими пакетами NuGet.
Этот менеджер пакетов помогает разработчикам управлять пакетами JavaScript и устанавливать их. Первоначально он был разработан специально для поддержки проектов Node, но теперь он может помочь с любыми зависимостями JavaScript. Это чрезвычайно мощная платформа, используемая для разработки приложений для онлайн-чатов, сайтов потокового видео, одностраничных приложений и многих других веб-приложений и веб-приложений с интенсивным вводом-выводом.
Разработчики могут установить npm, установив Node.js и клиент командной строки npm, для взаимодействия с npm. При использовании npm для управления пакетами JavaScript доступно несколько вариантов. Разработчики либо устанавливают пакеты по отдельности, используя команду npm install и вводя имя конкретного пакета, либо создают файл package.json, в котором перечислены все зависимости проекта. Затем они использовуют команду npm install для установки любых зависимостей, которых еще нет в проекте.
Пока разработчики запускают команду npm install для установки отдельных зависимостей в той же папке, что и их проект JavaScript, любые зависимости, которые они устанавливают индивидуально, также добавляются в файл package.json для упрощения обслуживания. Разработчики не обязаны разрешать конфликты зависимостей, и проекты могут включать несколько разных версий одной и той же зависимости.
Диспетчер пакетов npm также позволяет разработчикам различать зависимости, которые должны быть связаны с кодом для запуска в производственной среде, и зависимости, которые необходимы только в среде разработки и помечены в файле package.json как devDependencies. Среды тестирования кода могут быть перечислены в разделе devDependencies, но не зависимости, используемые для производства.
NuGet против NPM
NuGet ориентирован в основном на .NET, NPM – это менеджеры пакетов JavaScript.
Первая цель npm – поддержка Node.js: хорошо известного JavaScript-сервера. Npm – это инструмент командной строки, и вам будет удобнее его использовать. Как Visual Studio справляется с NuGet? Пакеты NuGet управляются диспетчером пакетов Nuget как визуально, так и с помощью консоли диспетчера пакетов.
Npm генерирует список действий, которые необходимо выполнить с деревом на диске. Ожидается, что все они, за исключением сценариев жизненного цикла, смогут действовать независимо друг от друга, не мешая друг другу. Это означает, например, что нужно иметь возможность обновить b в a→b→c без переустановки c с помощью npm.
Пользовательский интерфейс диспетчера пакетов NuGet в Visual Studio для Windows позволяет легко устанавливать, удалять и обновлять пакеты NuGet в проектах и решениях. Пользовательский интерфейс диспетчера пакетов не входит в состав Visual Studio Code.