Рубріки: 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",
  "версія": "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 докладно розглянуто тут:

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

Більше 8 млрд грн податків. Стільки сплатили резиденти Дія.City в І кварталі 2025 року

Резиденти Дія.City сплатили до бюджету понад 8 млрд грн податків в І кварталі 2025 року.…

18.04.2025

Китайських офісних працівників закликають менше працювати. Це має допомогти місцевій економіці

У Китаї закликають офісних працівників не працювати надто багато — держава сподівається, що вільний час…

18.04.2025

ChatGPT значно покращив пошук місць по фото. Це посилює проблеми конфіденційності

Експерти звертають увагу на тривожну тенденцію: люди все частіше використовують ChatGPT, щоб визначити місцезнаходження, зображене…

18.04.2025

Середовище розробки IntelliJ IDEA оновлено до версії 2025.1

Компанія JetBrains випустила нову версію мультимовного середовища розробки IntelliJ IDEA 2025.1. Оновлена IDE отримала численні…

18.04.2025

Discord впроваджує функцію сканування обличчя для перевірки віку користувачів

Платформа обміну миттєвими повідомленнями Discord впроваджує функцію перевірки віку за допомогою сканування обличчя. Зараз вона…

18.04.2025

Wikipedia випустила спеціальний датасет, щоб відволікти увагу ботів

Wikipedia намагається захистити себе від тисяч різноманітних ботів-скрейперів, які сканують дані цієї платформи для навчання…

18.04.2025