Что такое 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.
Фото: RealToughCandy.com
Для публикации пакетов в пространствах имен вам нужно создать учетную запись на 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 protected]> (http://website.com)
Весь код для создания и инициализации файла package.json может выглядеть так:
{ "name": "my-cool-package", "version": "1.0.0", "author": "Ваше Имя <[email protected]>" }
Подробнее о полях можно прочитать также в официальной документации.
Файл для загрузки модуля по 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 подробно рассматривается здесь:
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: