npm и pnpm

Тема дорожной карты · Node.js

npm — менеджер пакетов по умолчанию, поставляемый вместе со средой выполнения Node.js, и реестр, хранящий более двух миллионов JavaScript и TypeScript-пакетов для серверной разработки, фронтенд-инструментов и CLI-утилит. Установка пакета командой npm install <имя> фиксирует зависимость в package.json и закрепляет точное дерево разрешённых версий в package-lock.json, обеспечивая воспроизводимые установки в средах разработки и продакшна. npm предоставляет отдельные категории зависимостей — dependencies, devDependencies и peerDependencies — определяющие, будет ли пакет включён в продакшн-развёртывание Node.js или используется только в процессе разработки и тестирования. Команда npm ci предпочтительнее npm install в CI/CD-конвейерах, поскольку выполняет чистую установку строго по package-lock.json, исключая риск расхождения версий. Понимание разрешения пакетов npm, семантики версионирования (semver) и структуры директории node_modules — базовые знания для любого серверного разработчика на Node.js.

Как это работает

npm и pnpm трекает зависимости через package.json и пинит точную резолюцию в package-lock.json (npm), pnpm-lock.yaml (pnpm) или yarn.lock (yarn). Версии — semver (^1.2.3 пускает minor + patch; ~1.2.3 только patch; 1.2.3 строго). npm install (или pnpm install) читает manifest, резолвит граф, пишет lockfile, складывает пакеты в node_modules. pnpm — content-addressed store + симлинки; npm — копирует; runtime-резолюция одинакова.

Когда применять

pnpm — в monorepo и на dev-машинах с несколькими проектами; экономия диска + скорость реальны. npm — если хотите нулевое трение для новых контрибьюторов (он идёт с Node). Lockfile всегда коммитьте; в CI никогда npm install без него (npm ci / pnpm install --frozen-lockfile). Регулярно npm audit и npm outdated. Закрепляйте major-версии в package.json, когда стабильность важнее свежих фич.

Типичные ошибки

Ловушки npm и pnpm: удаление package-lock.json "чтобы сбросить" (пересобираете всё дерево deps, можете втянуть breaking patch); npm install в CI вместо npm ci (lockfile тихо меняется); годами игнорируемые npm audit (CVE копятся); глобальные установки (npm i -g) на shared-машинах (path-коллизии). npx или pnpm dlx — для одноразовых бинарей.

Связанные понятия

Полезные ресурсы