Публикация модуля Node.js в NPM

Введение NPM расшифровывается как Node Package Manager и относится либо к онлайн-репозиторию проектов, либо к инструменту интерфейса командной строки (CLI), используемому для взаимодействия с онлайн-репозиторием. В настоящее время NPM является крупнейшим в мире реестром программного обеспечения с более чем 1,4 млн пакетов кода. Например, если вы хотите использовать Node.js для отправки электронных писем, вы можете выполнить быстрый поиск в их репозитории и найти такой модуль, как Nodemailer [https://www.npmjs.com/package/nodemailer], который может спасти вас много времени. Ты

Вступление

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 и, возможно, помочь другим разработчикам с той же проблемой.

comments powered by Disqus