npm — это стандартный пакетный менеджер для Node.js, который решает три базовые задачи: хранение и распространение пакетов кода через регистр, управление зависимостями вашего проекта и выполнение проектных скриптов. Он позволяет вам устанавливать библиотеки, фиксировать их версии согласно семантическому версионированию, а также автоматизировать рутинные операции (сборка, тесты, линтинг).
npm install (сокр. npm i) — устанавливает зависимости из package.json и обновляет package-lock.json. Без аргументов — установка всего; с именем пакета — установка конкретного.
npm uninstall (сокр. npm rm) — удаляет пакет и записывает изменение в package.json.
npm update — обновляет зависимости в рамках разрешённых диапазонов версий.
npm run <script> — запускает скрипт из секции scripts файла package.json.
npm test — алиас для npm run test.
npm exec (или npx) — запускает бинарь из зависимостей без глобальной установки.
npm outdated — показывает устаревшие пакеты и доступные версии (current, wanted, latest).
npm audit — ищет уязвимости в зависимостях; npm audit fix — пытается исправить автоматически.
npm ci — детерминированная установка по package-lock.json для CI. Удаляет каталог node_modules и ставит зависимости в точности как в lock-файле.
npm cache — управление локальным кэшем (см. раздел «Очистка кэша»).
npm login, npm logout, npm whoami — аутентификация в реестре для публикации.
npm publish, npm deprecate — публикация и пометка версий пакета как устаревших.
npm link — локальная разработка пакетов через симлинки.
Инициализация проекта
npm init -y
Установка библиотеки как обычной зависимости
npm i express
Установка библиотеки как dev-зависимости (только для разработки)
npm i -D typescript
Запуск локально установленного бинаря без глобальной установки
npx tsc --init
Проверка устаревших пакетов
npm outdated
Детерминированная установка в CI
npm ci
Установка пакетов
Локальная и глобальная установка
По умолчанию пакеты ставятся в каталог node_modules текущего проекта и записываются в package.json. Глобальная установка (npm i -g <pkg>) используется для инструментов командной строки, которые вы вызываете из любого каталога (например, npm сам установлен глобально).
Типы зависимостей
dependencies — нужны в рантайме приложения (например, express).
devDependencies — нужны только в разработке (тесты, линтеры, сборщики).
peerDependencies — указывают совместимость с хост-пакетом (например, плагин требует react определённой версии, но не устанавливает его сам).
optionalDependencies — необязательные, их сбой установки не прерывает установку проекта.
Добавить обычную зависимость
npm i axios
Добавить dev-зависимость
npm i -D vitest
Добавить peer-зависимость вручную (npm покажет предупреждение, но ставит не будет)
npm i react@^18
Форматы источников
npm поддерживает установку из реестра, по git-URL, с локального пути и из tarball-архива.
Установка из Git
npm i git+https://github.com/user/repo.git
Локальная установка из папки пакета
npm i ../my-local-lib
Установка из tarball
npm i https://registry.npmjs.org/pkg/-/pkg-1.0.0.tgz
Отслеживание версий (SemVer)
npm следует SemVer: MAJOR.MINOR.PATCH (например, 2.5.1). Увеличение PATCH — исправления без изменения API, MINOR — новые обратносovместимые возможности, MAJOR — потенциально ломающие изменения.
Диапазоны версий
^1.4.2 — разрешает обновления MINOR/PATCH (до <2.0.0).
package-lock.json фиксирует точные версии, хеши и дерево зависимостей для воспроизводимых установок. В репозитории его следует коммитить.
npm install — может изменять lock-файл согласно диапазонам.
npm ci — строго следует lock-файлу, установка падает при несоответствии.
Очистка кэша
npm кэширует загруженные пакеты для ускорения последующих установок. Повреждённый кэш может приводить к ошибкам установки.
Проверка целостности кэша и вывод его пути
npm cache verify
Полная очистка кэша (требует --force)
npm cache clean --force
.npmrc (конфигурация npm)
Файл .npmrc хранит настройки клиента npm на разных уровнях: глобально (в домашнем каталоге), локально (в корне проекта) и на уровне переменных окружения. Ключевые опции:
; Использовать собственный реестр (например, корпоративный)
registry=https://registry.npmjs.org/
; Складывать точные версии в package.json (без ^ и ~)
save-exact=true
; Принудительная проверка движка Node.js
engine-strict=true
; Авто-добавление node в PATH для скриптов на Windows
scripts-prepend-node-path=true
; Уровень отчётности audit
audit-level=high
; Отключить напоминания о финансировании
fund=false
; Префикс для глобальных установок (избегайте sudo)
prefix=${HOME}/.npm-global
; Авторизация для приватного реестра (используйте переменные окружения в CI)
; //registry.npmjs.org/:_authToken=${NPM_TOKEN}
; Настройки по скоупам
@my-scope:registry=https://npm.my-company.local/
Работа с конфигом через команду
Прочитать значение
npm config get registry
Установить значение на уровне пользователя
npm config set save-exact true
Установить значение локально (в .npmrc проекта)
npm config set engine-strict true --location=project
Практический минимум: от нуля до запуска
# 1) Инициализация проекта npm init -y
2) Добавляем зависимости
npm i express
3) Добавляем dev-инструменты
npm i -D typescript ts-node nodemon
4) Настраиваем скрипты
(редактируем package.json вручную или через npm set-script)
npm set-script dev "nodemon src/index.ts"
npm set-script build "tsc -p tsconfig.json"
npm set-script start "node dist/index.js"
5) Детерминированная установка в CI
npm ci
6) Безопасность и обновления
npm audit --production
npm outdated