Що таке 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", "версія": "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 докладно розглянуто тут:
Favbet Tech – це ІТ-компанія зі 100% українською ДНК, що створює досконалі сервіси для iGaming і Betting з використанням передових технологій та надає доступ до них. Favbet Tech розробляє інноваційне програмне забезпечення через складну багатокомпонентну платформу, яка здатна витримувати величезні навантаження та створювати унікальний досвід для гравців.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: