Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що таке npm?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**npm (Node Package Manager)** - інструмент для встановлення, оновлення й публікації бібліотек у Node.js-проєктах; **`node_modules`** - папка, куди він фізично встановлює всі залежності проєкту. **Ключове:** `package.json` описує залежності, `package-lock.json` фіксує їхні точні версії, `node_modules` - фактичне сховище пакетів.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## Що таке **npm** **npm** - скорочення від > **Node Package Manager** - *менеджер пакетів для Node.js.* ### Простіше кажучи: > npm - це інструмент, який дозволяє **встановлювати, оновлювати, видаляти й керувати** бібліотеками (пакетами) у Node.js-проєктах. ## Основні функції npm | Можливість | Що робить | |---|---| | Встановлення пакетів | Встановлює зовнішні бібліотеки (`npm install express`) | | Публікація пакетів | Дозволяє викласти власний пакет у публічний npm-реєстр | | Керування залежностями | Стежить за версіями, зберігає їх у `package.json` | | Запуск скриптів | Дозволяє виконувати команди з розділу `scripts` | | Кешування | Зберігає завантажені пакети локально, прискорюючи повторне встановлення | ## Приклади команд npm | Команда | Призначення | |---|---| | `npm init` | Створює `package.json` | | `npm install` (або просто `npm i`) | Встановлює всі залежності з `package.json` | | `npm install express` | Встановлює конкретний пакет | | `npm install --save-dev nodemon` | Встановлює пакет як dev-залежність | | `npm uninstall express` | Видаляє пакет | | `npm update` | Оновлює залежності | | `npm run <script>` | Запускає команду з `"scripts"` у `package.json` | | `npm publish` | Публікує власний пакет у npm-реєстр | ## Де зберігаються пакети після встановлення Усі пакети, встановлені через npm, потрапляють у папку `node_modules/` у корені проєкту. ## Що таке `node_modules` `node_modules` - це **директорія**, куди npm (або pnpm, yarn) встановлює **всі залежності проєкту**. ### Приклад структури проєкту ```javascript my-app/ ├── node_modules/ │ ├── express/ │ ├── chalk/ │ ├── lodash/ │ └── ... ├── package.json ├── package-lock.json └── index.js ``` Кожен встановлений пакет - це папка всередині `node_modules`. ## Як пов'язані npm і node_modules 1. Коли ти встановлюєш пакет: ```javascript npm install express ``` 2. npm: - шукає пакет **в онлайн-реєстрі npm** ([https://www.npmjs.com](https://www.npmjs.com)), - завантажує його та всі його залежності, - розміщує все в папці `node_modules/`, - записує назву й версію в `package.json`. ## Що таке `package-lock.json` Після встановлення npm створює файл `package-lock.json`: - фіксує **точні версії** всіх встановлених пакетів і їхніх підзалежностей; - гарантує **однакову збірку** в усіх розробників проєкту; - пришвидшує повторні встановлення. ## Приклад процесу ```javascript npm init -y # створюємо package.json npm install express # встановлюємо бібліотеку ``` Після цього структура: ```javascript my-app/ ├── node_modules/ │ └── express/ ├── package.json └── package-lock.json ``` ## Важливі деталі ### Локальні й глобальні пакети | Тип | Команда | Де встановлюється | |---|---|---| | **Локальний** | `npm install express` | у `./node_modules` поточного проєкту | | **Глобальний** | `npm install -g nodemon` | у зовнішню системну директорію npm | ### Навіщо потрібна `node_modules` - Це **фізичне сховище** всіх залежностей проєкту. - Без неї проєкт не запуститься, якщо залежності не встановлені. ### Чому `node_modules` не заливають на GitHub Папка може займати **сотні мегабайтів**. Замість цього в репозиторій додають лише: - `package.json` - перелік залежностей; - `package-lock.json` - точні версії. При клонуванні проєкту достатньо виконати: ```javascript npm install ``` - і npm заново створить `node_modules`. ## Підсумок | Поняття | Опис | |---|---| | **npm** | Менеджер пакетів для Node.js (встановлює, оновлює, публікує бібліотеки) | | **node_modules** | Папка, де фізично зберігаються встановлені пакети | | **package.json** | Описує залежності проєкту | | **package-lock.json** | Фіксує точні версії пакетів для стабільності |Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.