npm: основи, менеджер пакетів для React Native та Node.js

Автор: IT Sectr Опубліковано: 2026-02-13 Час читання: 10 хв

npm (Node Package Manager) — стандартний менеджер пакетів для платформи Node.js, що входить до комплекту встановлення Node.js. npm керує залежностями проектів JavaScript та TypeScript: встановлює бібліотеки в node_modules, оновлює версії пакетів, вирішує конфлікти версій. package.json — центральний конфігураційний файл з метаданими та списком залежностей. npm Registry — найбільший реєстр пакетів. Детальніше — на npm Registry.

Головне

  • npm — стандартний менеджер пакетів Node.js, що входить до встановлення Node.js з версії 0.6.3
  • package.json — конфігураційний файл проекту з залежностями, скриптами та метаданими
  • npm install — базова команда встановлення залежностей з package.json у папку node_modules
  • package-lock.json — файл фіксації точних версій для відтворюваних встановлень на всіх середовищах
  • npm ci — команда для CI/CD, що встановлює пакети строго за lock-файлом без його оновлення

Що таке npm — менеджер пакетів Node.js?

npm був створений у 2010 році Айзеком Шлютером як рішення для керування залежностями Node.js. З 2014 року npm керується компанією npm, Inc., придбаною Microsoft/GitHub у 2020. Інструмент складається з двох частин: CLI (командний рядок) для встановлення та керування пакетами, та Registry — центрального репозиторію всіх опублікованих модулів за адресою registry.npmjs.org.

npm Registry — найбільший реєстр пакетів: понад 2 мільйони пакетів та понад 10 мільярдів завантажень щомісяця. Кожен пакет має версію SemVer, опис, залежності, ліцензію та авторство. Публікація власного пакета виконується через npm publish. npm підтримує scoped-пакети для організацій (@scope/package), приватні реєстри та вбудований аудит безпеки.

Node.js версії 18+ включає npm 9+ з покращеною продуктивністю, workspaces для монорепозиторіїв та переробленим механізмом peer dependencies. Екосистема npm охоплює серверний JavaScript, фронтенд (React, Vue, Angular), мобільну розробку (React Native), інструменти збірки (Webpack, Vite) та CLI-утиліти. npm — основний канал поширення бібліотек JavaScript.

Основні можливості npm

npm install — головна команда, що читає package.json та package-lock.json для встановлення всіх залежностей у node_modules. При першому запуску npm обчислює граф залежностей, вирішує конфлікти версій та генерує package-lock.json. Команда npm install <package> встановлює конкретний пакет; прапорець --save-dev додає його до devDependencies, --global — глобально.

npx — виконавець пакетів, що входить до npm з версії 5.2. npx дозволяє запускати CLI-утиліти без глобального встановлення: npx react-native init або npx create-react-app my-app. npx завантажує пакет у тимчасовий кеш, запускає, а після завершення очищає його. npx також корисний для запуску конкретних версій інструментів.

npm audit сканує дерево залежностей на відомі вразливості з бази npm. Команда виводить звіт з рівнями критичності (critical, high, moderate) та рекомендує npm audit fix для автоматичного оновлення вразливих пакетів. npm cache зберігає завантажені пакети локально. npm cache clean --force очищає кеш при проблемах зі встановленням. npm outdated показує застарілі пакети.

bash
# Основні команди npm
$ npm install
$ npm install react-native-webview --save
$ npm install typescript --save-dev
# Запуск без глобального встановлення
$ npx react-native init MyApp
# Аудит безпеки
$ npm audit --fix

Структура package.json та керування залежностями

package.json — це JSON-файл у корені проекту, який описує його метадані, залежності та конфігурацію. Обов'язкові поля: name (унікальне ім'я пакета) та version (версія SemVer, наприклад 1.0.0). Файл створюється командою npm init -y для швидкої ініціалізації або вручну.

Semantic Versioning (SemVer) — стандарт версіонування у форматі MAJOR.MINOR.PATCH. Мажорна версія змінюється при несумісних змінах API, мінорна — при додаванні функціоналу (зворотно сумісно), патч — при виправленні багів. Символ ^ перед версією дозволяє оновлення мінорної та патч-версій, ~ — тільки патч-версії.

json
{
  "name": "my-app",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios"
  },
  "dependencies": {
    "react": "^18.3.0",
    "react-native": "^0.76.0"
  },
  "devDependencies": {
    "typescript": "^5.5.0",
    "@types/react": "^18.3.0"
  }
}
ПолеПризначенняПриклад значення
scriptsКоманди запуску для npm run"start": "node index.js"
dependenciesProduction-залежності додатку"react": "^18.3.0"
devDependenciesІнструменти розробки та тестування"jest": "^29.7.0"
peerDependenciesХост-залежності для бібліотек"react": ">=17.0.0"
enginesВимоги до версій Node.js{"node": ">=18.0.0"}

npm у розробці React Native

Проекти React Native активно використовують npm для керування залежностями. Стандартний набір включає react, react-native, бібліотеки навігації (React Navigation), HTTP-запитів (axios), керування станом (Redux, Zustand) та UI-компонентів. npm дозволяє встановлювати тисячі сумісних пакетів з реєстру.

npx pod-install — обов'язкова команда після встановлення нативних модулів у React Native для iOS. npm автоматично генерує Podfile.lock на основі package-lock.json. У Expo-проектах використовується expo install замість npm install, оскільки він підбирає версії, сумісні з поточною версією Expo SDK.

Конфлікти версій — часта проблема React Native: react-native-reanimated, react-native-gesture-handler та react-native-safe-area-context вимагають узгоджених версій. Рішення — оновити всі пакети до останніх сумісних версій або використовувати --legacy-peer-deps. package-lock.json критичний для нативних модулів, що компілюються через CocoaPods та Gradle.

Порівняння npm з альтернативними менеджерами

npm — стандартний менеджер пакетів, що входить до Node.js. Основні альтернативи: yarn (створений Facebook у 2016) та pnpm (швидкий, з жорсткими посиланнями). Починаючи з npm 5, різниця у швидкості та функціоналі між npm та yarn мінімальна. npm 7+ додав workspaces, що робить його конкурентоспроможним для монорепозиторіїв.

Характеристикаnpmyarnpnpm
Рік створення201020162017
Lock-файлpackage-lock.jsonyarn.lockpnpm-lock.yaml
ВстановленняПослідовне (npm 5+)ПаралельнеПаралельне
Дисковий простірСтандартнийСтандартнийМінімальний (посилання)
WorkspacesТак (npm 7+)ТакТак
Plug'n'PlayНіТакНі

За даними State of JS 2025: npm використовують 62% розробників, yarn — 35% (переважно старі проекти та прихильники PnP), pnpm — 3%. Для React Native проектів обидва інструменти рівноцінні, але npm частіше зустрічається в проектах на Expo SDK 50+ та нових ініціалізаціях React Native.

yarn зберігає перевагу в екстремально великих монорепозиторіях (100+ пакетів) завдяки більш зрілій реалізації workspaces та Plug'n'Play. pnpm виграє в економії дискового простору за рахунок жорстких посилань на глобальний стор. Вибір менеджера залежить від командних уподобань та інфраструктури.

Часто задавані питання

Чим відрізняється npm install від npm ci?

npm install оновлює package-lock.json і може встановлювати нові мінорні версії в межах семантичного діапазону. npm ci (Clean Install) видаляє node_modules і встановлює пакети строго за package-lock.json без його оновлення. npm ci швидше, використовується в CI/CD та гарантує ідентичне середовище на всіх машинах. Якщо package-lock.json відсутній, npm ci видає помилку.

Як виправити конфлікти peer dependencies в npm?

Починаючи з npm 7, конфлікти peer dependencies викликають помилку збірки. Рішення: оновити всі пакети до сумісних версій через npm update, використати прапорець --legacy-peer-deps для режиму npm 6, або додати секцію overrides в package.json для примусової фіксації версії конкретного пакета. Найкращий варіант — оновити залежності до сумісних версій.

Що таке npm audit і навіщо він потрібен?

npm audit сканує дерево залежностей на відомі вразливості з бази npm Security Advisory. Команда виводить звіт з рівнем критичності (critical, high, moderate, low) та рекомендує npm audit fix для автоматичного оновлення вразливих пакетів до безпечних версій. Регулярний запуск npm audit — базова практика безпеки JavaScript проектів.

Як npm workspaces спрощують монорепозиторії?

npm workspaces дозволяють керувати кількома пакетами в одному репозиторії. Додайте поле "workspaces": ["packages/*"] у кореневий package.json. Переваги: єдине встановлення всіх залежностей у спільний node_modules, автоматичні симлінки між локальними пакетами, запуск скриптів для всіх пакетів з кореня, усунення дублювання версій.

Навіщо комітити package-lock.json у репозиторій?

package-lock.json фіксує точні версії всіх залежностей та їх транзитивних пакетів. Без нього різні розробники та CI-сервери можуть отримати різні версії бібліотек в межах семантичного діапазону, що призводить до помилок «на моїй машині працює». Коміт lock-файлу гарантує відтворювані збірки та ідентичну поведінку на всіх середовищах.

Підсумки

  • npm — стандартний менеджер пакетів Node.js, що входить до складу встановлення Node.js з версії 0.6.3
  • package.json — конфігураційний файл проекту з залежностями, скриптами та метаданими
  • npm install — встановлення залежностей, npm ci — фіксація за package-lock.json для CI/CD
  • package-lock.json — фіксація точних версій, обов'язковий для відтворюваних збірок
  • npm Registry — найбільший реєстр пакетів з більш ніж 2 мільйонами модулів
  • npm audit — перевірка безпеки залежностей з автоматичним виправленням вразливостей
  • npm workspaces — механізм керування монорепозиторіями зі спільними node_modules

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також