Рубріки: Front-endТеория

Что такое npm (Node Package Manager)? Как установить и разместить пакеты

Андрій Денисенко

Что такое npm?

Node Package Manager (npm) — это менеджер пакетов JavaScript, который управляет зависимостями в проектах, написанных на Node.js.

С помощью этого менеджера можно управлять установкой, обновлением и удалением пакетов (библиотек). В широком смысле npm — это крупнейший в мире реестр программного обеспечения.

В npm входят три компонента:

  • веб-сайт;
  • интерфейс командной строки (CLI);
  • реестр.

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

Интерфейс командной строки (CLI) работает в терминале, через который разработчики взаимодействуют с npm.

Реестр — это крупная общедоступная база данных с программным обеспечением JavaScript и сопутствующей мета-информацией.

Для чего используют Node Package Manager

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

С помощью npm вы можете:

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

История появления Node Package Manager

Менеджер пакетов для Node.js npm появился в 2009 году, чтобы помочь разработчикам на JavaScript легко и быстро делиться упакованными модулями кода. Его разработал Райан Даль (Ryan Dahl).

Райан Даль. Фото: franksvalli

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

Сегодня npm поставляется вместе с каждой установкой Node.js, и его экосистема продолжает быстро расти.

Преимущества использования npm

Использование npm дает множество преимуществ при разработке проектов на Node.js:

  • Легкость установки. npm поставляется вместе с Node.js, поэтому его установка занимает всего несколько минут.
  • Управление зависимостями. npm упрощает управление зависимостями, что особенно важно для проектов с большим количеством модулей. Каждый пакет в npm — это набор файлов и зависимостей, которые можно установить и использовать в своем проекте.
  • Поддержка публикации пакетов. npm позволяет разработчикам публиковать свои пакеты, что помогает им делиться своими библиотеками и модулями с другими разработчиками по всему миру.
  • Большое количество доступных пакетов. npm предлагает доступ к более чем 1,5 миллионам пакетов, что позволяет разработчикам быстро и легко находить нужные им модули и библиотеки. С помощью npm вы можете установить пакеты из центрального репозитория npm или из локальных файлов.
  • Контроль версий. npm автоматически контролирует версии пакетов, что позволяет разработчикам избежать конфликтов между версиями модулей. Вы можете установить конкретную версию пакета, а также обновить пакет до последней версии. Это гарантирует, что ваш проект будет совместим со всеми необходимыми зависимостями.
  • Поддержка командной строки. Использование команд CLI позволяет автоматизировать установку и управление зависимостями.

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

Обзор работы npm

Для работы с npm нужно установить Node.js.

Для публикации пакетов в пространствах имен вам нужно создать учетную запись на npmjs.com и настроить двухфакторную идентификацию (необязательно, но желательно).

Пакет — это файл или каталог, описание которого приведено в сопровождающем его файле package.json. Этот файл нужен для публикации пакета в реестре npm.

Рассмотрим процессы установки и создания пакетов подробнее.

Установка пакетов

Пакеты можно устанавливать на локальном и на глобальном уровне.

Локальная установка

Установите пакет локально, если от него зависит ваш собственный модуль, например, если он указан в функции require(). Это поведение npm по умолчанию.

Установка пакета из глобального пространства имен (unscoped package)

Пакеты из глобального пространства имен всегда общедоступны. Любой пользователь может найти такой пакет, загрузить его и установить.

Для установки общедоступного пакета выполните следующую команду в каталоге своего проекта:

npm install <package_name>

В текущем каталоге будет создан каталог с именем node_modules (если он еще не был создан), и в него загрузится новейшая версия пакета.

Установка общедоступного пакета из указанного пространства имен (scoped public package)

Общедоступный пакет из указанного пространства имен может загрузить и установить любой пользователь, если во время установки указано имя пространства имен:

npm install @scope/package-name

Установка частного пакета (private package)

Частные (приватные) пакеты могут загрузить только те, кому предоставлен доступ для чтения этих пакетов. Эти пакеты всегда принадлежат пространству имен и его нужно указать при установке:

npm install @scope/private-package-name

Глобальная установка

Если вы используете npm 5.2 или выше, для выполнения пакетов на глобальном уровне рекомендуется использовать npx, утилиту для запуска npm-пакетов.

Если пакет установлен на глобальном уровне, то вы можете использовать его код как набор инструментов на локальном компьютере.

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

npm install -g <package_name>

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

Размещение пакетов

Для размещения пакета в реестре нужен файл package.json, в котором приводится описание пакета. Он упрощает установку пакета и управление им. В файле package.json:

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

Для упрощения поиска рекомендуется использовать пользовательское поле description в файле package.json.

Файл package.json можно создать двумя способами: (1) ответив на вопросы в CLI или (2) создав package.json по умолчанию.

Чтобы создать файл первым способом:

  • В командной строке перейдите в корневой каталог своего модуля Node.js и запустите npm init:
    • для модуля с пространством имен запустите npm init --scope=@scope-name;
    • Для модуля в глобальном пространстве имен запустите npm init.
  • Укажите значения для обязательных полей (name и version), а также поля main:
    • name: имя модуля.
    • version: начальная версия модуля.
    • main: идентификатор модуля, служащий основной точкой входа в вашу программу. Если это значение не задано, то по умолчанию используется файл index.js в корневом каталоге пакета.

Чтобы создать файл package.json по умолчанию, запустите npm init --yes.

Болеее подробные инструкции по созданию файла можно найти в официальной документации.

Поля name и version — обязательные для заполнения, вне зависимости от того, каким способом вы создаете файл package.json:

  • Поле name содержит имя пакета. Имя должно быть указано одним словом и может содержать символы нижнего регистра, дефиса и подчеркивания.
  • Значение в поле version должно соответствовать правилам семантического именования версий (semantic versioning guidelines). Через точку указывается три цифры: текущая старшая версия, текущая младшая и мелкие изменения. Например, 1.1.0.

Если вы хотите указать информацию об авторе пакета, используйте следующий формат:

Ваше Имя <email@website.com> (http://website.com)

Весь код для создания и инициализации файла package.json может выглядеть так:

{
  "name": "my-cool-package",
  "version": "1.0.0",
  "author": "Ваше Имя <email@website.com>"
}

Подробнее о полях можно прочитать также в официальной документации.

Файл для загрузки модуля по require()

Функция require() — это функция Node.js для загрузки модулей. В ее аргументы передается название модуля, который нам нужен.

require() может быть полезна, если мы хотим использовать сторонний модуль в своем пакете. Чтобы создать файл package.json с использованием этой функции, объявите ее как свойство объекта exports. Так вы предоставите стороннему коду доступ к ней:

exports.logMsg = function() {
  console.log("Привет из модуля!");
}

Создание и публикация общедоступного пакета в глобальном пространстве имен

  • в командной строке создайте каталог пакета;
  • перейдите в каталог пакета;
  • в корневом каталоге пакета запустите команду npm init;
  • ответьте на вопросы для создания файла package.json;
  • создайте файл README с описанием кода и указаниями по его использованию;
  • создайте код пакета;
  • проверьте пакет на наличие конфиденциальной информации и удалите ее, если она в нем присутствует;
  • протестируйте пакет, указав полный путь к его каталогу: npm install path/to/my-package;
  • опубликуйте пакет, запустив команду npm publish из корневого каталога пакета;
  • чтобы просмотреть опубликованный пакет, откройте адрес https://npmjs.com/package/package-name, заменив package-name именем своего пакета.

Важно! Не включайте в пакеты конфиденциальную информацию.

Создание и публикация общедоступного пакета в указанном пространстве имен

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

  • если вы пользуетесь npmrc для управления учетными записями, переключитесь на нужный профиль командой npmrc <profile-name>;
  • в командной строке создайте каталог пакета;
  • перейдите в каталог пакета;
  • в корневом каталоге пакета запустите одну из следующих команд:
    • для пакета в пространстве имен организации (замените my-org именем организации): npm init --scope=@my-org;
    • для пакета в пользовательском пространстве имен (замените my-username именем пользователя): npm init --scope=@my-username.
  • ответьте на вопросы для создания файла package.json;
  • создайте файл README с описанием кода и указаниями по его использованию;
  • создайте код пакета;
  • проверьте пакет на наличие конфиденциальной информации и удалите ее, если она в нем присутствует;
  • протестируйте пакет, указав полный путь к его каталогу: npm install path/to/my-package;
  • опубликуйте пакет, запустив команду npm publish --access public из корневого каталога пакета;
  • чтобы просмотреть опубликованный пакет, откройте адрес https://npmjs.com/package/package-name, заменив package-name именем своего пакета.

Создание и публикация частного пакета

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

  • если вы пользуетесь npmrc для управления учетными записями, переключитесь на нужный профиль командой npmrc <profile-name>;
  • в командной строке создайте каталог пакета;
  • перейдите в каталог пакета;
  • в корневом каталоге пакета запустите одну из следующих команд:
    • для пакета в пространстве имен организации (замените my-org именем организации): npm init --scope=@my-org;
    • для пакета в пользовательском пространстве имен (замените my-username именем пользователя): npm init --scope=@my-username.
  • ответьте на вопросы для создания файла package.json;
  • создайте файл README с описанием кода и указаниями по его использованию;
  • создайте код пакета;
  • проверьте пакет на наличие конфиденциальной информации и удалите ее, если она там есть;
  • протестируйте пакет, указав полный путь к его каталогу: npm install path/to/my-package;
  • опубликуйте пакет, запустив команду npm publish из корневого каталога пакета;
  • чтобы просмотреть опубликованный пакет, откройте адрес https://npmjs.com/package/package-name, заменив package-name именем своего пакета.

Заключение

npm — это важный и обязательный инструмент для разработки проектов на Node.js. Благодаря тому, что в npm-репозитории содержится большое количество пакетов, разработчики могут быстро и удобно добавлять функциональность в свои проекты, используя готовые модули и библиотеки.

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

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

Подробнее об использовании пакетов npm можно узнать, посмотрев это видео:

Пример создания своего пакета npm подробно рассматривается здесь:

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023