Вступление
NPM расшифровывается как Node Package Manager и относится либо к онлайн-репозиторию проектов, либо к инструменту интерфейса командной строки (CLI), используемому для взаимодействия с онлайн-репозиторием.
В настоящее время NPM является крупнейшим в мире реестром программного обеспечения с более чем 1,4 млн пакетов кода. Например, если вы хотите использовать Node.js для отправки электронных писем, вы можете выполнить быстрый поиск в их репозитории и найти такой модуль, как Nodemailer , который может сэкономить вам много времени.
Возможно, вы захотите поделиться созданным вами инструментом с сообществом, который упрощает некоторые стандартные задачи. В этой статье мы рассмотрим, как опубликовать модуль Node.js в NPM.
Начало работы с NPM
Чтобы опубликовать модуль в NPM, нам нужна учетная запись NPM. Если у вас его нет, вы можете создать его здесь .
Когда вы устанавливаете Node.js, npm
также устанавливается
автоматически.
Чтобы проверить, правильно ли установлен npm
, вы можете проверить
текущую установленную версию, запустив:
$ npm -v
Убедившись, что у нас действительно npm
, мы можем войти в систему:
$ npm login
Инструмент запросит у нас наш идентификатор, адрес электронной почты и пароль, созданные при регистрации.
Примечание. Для использования NPM не обязательно иметь учетную запись, но для публикации модуля он вам понадобится, поскольку он привязан к вам как к автору.
Создание пакета
Создадим каталог для нашего проекта и перейдем в него:
$ mkdir publish-to-npm
$ cd publish-to-npm
Далее мы инициализируем проект:
$ npm init
Затем команда предложит вам несколько вопросов, после заполнения которых
будет создан файл package.json
{
"name": "publish-to-npm",
"version": "1.0.0",
"description": "\"Sample module for publishing\"",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": " [email protected] ",
"license": "ISC"
}
По умолчанию основной точкой входа является index.js
, поэтому мы
хотим создать этот файл и что-нибудь в него добавить.
Если бы вы использовали -y
вместе с командой init
, для них были бы
установлены значения по умолчанию.
Добавление зависимостей
Давайте добавим код в наш index.js
и добавим зависимость, например,
еще один модуль NPM для его использования.
Сначала мы установим зависимость:
$ npm install node-fetch --save
Затем мы импортируем его в наш index.js
и добавим логику:
const fetch = require('node-fetch');
fetch('https://google.com')
.then(res => res.text())
.then(text => console.log(text))
Чтобы убедиться, что это работает, мы можем запустить:
$ node index.js
И результат:
<!doctype html>
<html itemscope="" itemtype="http://schema.org/WebPage" lang="en-RS">
<head>
<meta charset="UTF-8">
<meta content="origin" name="referrer">
<!-- Rest of the page -->
При проверке package.json
сейчас мы видим node-fetch
в наших
зависимостях:
{
"name": "publish-to-npm",
"version": "1.0.0",
"description": "\"Sample module for publishing\"",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": " [email protected] ",
"license": "ISC"
"dependencies": {
"node-fetch": "2.6.1"
}
}
Примечание. Флаг --save
npm
необходимо обновить проект с помощью
модуля в качестве зависимости. Это было снято в новых версиях, и модуль
будет добавлен в список зависимостей даже без --save
, хотя для более
старых версий вам придется его использовать.
Публикация в NPM
Теперь мы можем опубликовать модуль в NPM с помощью команды publish
:
$ npm publish
Если вы получаете какую-либо ошибку, скорее всего, это связано с конфликтом имен. т.е. пакет с таким именем уже существует в npm. Мы должны изменить название нашего проекта на какое-нибудь уникальное.
Вы можете искать существующие имена пакетов через строку поиска на домашней странице .
После того, как вы придумали уникальное имя, вам нужно изменить имя
пакета в нашем файле package.json
Для единообразия также рекомендуется
обновить имя папки, чтобы оно соответствовало имени пакета.
Если вы не можете придумать уникальное имя, вам следует проверить пакеты с ограниченной областью действия . По сути, это дает вам собственное пространство имен в NPM, так что вы можете называть свои пакеты как хотите.
Обычно рекомендуется, чтобы, если вы планируете сделать модуль общедоступным, вы все равно избегаете использования того же имени, что и другой пакет, чтобы избежать ненужной путаницы. Однако это очень удобно для личного использования.
Это одна из тех настроек, которые мы избегали изменять с помощью флага
-y
Если вы хотите создать модуль с ограниченной областью видимости,
вам нужно будет инициализировать свой проект с помощью:
$ npm init [email protected]
Заключение
В этой статье мы написали простое приложение и опубликовали его в NPM в качестве общедоступного модуля, чтобы другие разработчики могли использовать его по своему усмотрению.
В будущем вы можете столкнуться с ситуацией, когда вы не найдете готового модуля для решения вашей конкретной проблемы. Вы можете написать решение самостоятельно и загрузить его в NPM и, возможно, помочь другим разработчикам с той же проблемой.