npm (Node Package Manager) — менеджер пакетов для Node.js и крупнейший публичный реестр программных пакетов в мире. Состоит из двух компонентов: CLI-утилиты (npm install, npm run) и публичного реестра registry.npmjs.org с более чем 2,5 млн пакетов (2024). Зависимости описываются в package.json; зафиксированные версии — в package-lock.json.
Основные команды
npm install— установить все зависимости из package.json вnode_modules/npm install express --save— добавить зависимость вdependenciesnpm install jest --save-dev— добавить вdevDependenciesnpm install -g typescript— глобальная установкаnpm run build— выполнить скрипт «build» из package.jsonnpm ci— «чистая» установка по lock-файлу, для CI/CDnpm outdated— список устаревших пакетов с актуальными версиямиnpm audit— проверка зависимостей на уязвимости (CVE)npm publish— публикация пакета в реестр
История
npm создан Айзеком Шлютером (Isaac Schlueter) в 2009 году. Первый пакет — npm версии 0.0.1 (12 ноября 2009). В 2014 году npm Inc. привлекла инвестиции. В 2020 году GitHub (Microsoft) купила npm Inc., сохранив реестр общедоступным. Альтернативы: Yarn создан Facebook в 2016 году для решения проблем скорости и воспроизводимости. pnpm появился в 2017 году с экономией диска через symlink-архитектуру. npm 7 (2020) представил workspaces; npm 8 (2021) — переработал peer dependencies; npm 9 (2022) — ускорил установку и изменил настройки по умолчанию.
npm vs Yarn vs pnpm
| Параметр | npm 10 | Yarn 4 | pnpm 9 |
|---|---|---|---|
| Скорость установки | Средняя | Высокая (PnP) | Максимальная |
| Экономия диска | Нет | Нет (legacy) / Да (PnP) | Да (content-addressable store) |
| Workspaces (monorepo) | Да (npm 7+) | Да | Да (лучший) |
| Встроен в Node.js | Да | Нет | Нет (corepack) |
Безопасность
npm audit сканирует дерево зависимостей на известные уязвимости из базы данных GitHub Advisory. Команда npm audit fix автоматически обновляет патченные версии. Критическая проблема экосистемы: зависимости имеют тысячи транзитивных зависимостей — атаки на цепочку поставок (supply chain attacks) участились с 2021 года. Инцидент: colors и faker намеренно сломаны автором в 2022 году, затронув тысячи проектов.
На что обращать внимание в хостинге
На VPS с Node.js-приложениями node_modules/ занимает 100–500 МБ. Не копируй node_modules/ при деплое через Git deploy — запускай npm ci --omit=dev на сервере. В Docker: используй многоступенчатую сборку, чтобы devDependencies не попали в продакшн-образ. В CI/CD: кэшируй директорию ~/.npm между запусками для ускорения установки.