npm install
Тема дорожной карты · Node.js
npm install — это основная CLI-команда для загрузки и установки JavaScript-пакетов, перечисленных в файле package.json проекта, в локальную директорию node_modules. Запуск npm install без аргументов устанавливает все зависимости, объявленные в разделах dependencies и devDependencies, тогда как передача имени пакета, например npm install express, загружает последнюю совместимую версию и автоматически добавляет её в package.json. Флаг --save-dev указывает npm записать пакет в раздел devDependencies, что подходит для инструментов вроде линтеров и тест-раннеров, не нужных в продакшн-среде Node.js. При наличии файла package-lock.json команда npm install соблюдает точные версии, зафиксированные в нём, обеспечивая воспроизводимые установки на разных машинах и в CI-конвейерах. Понимание npm install и механизма разрешения дерева зависимостей npm является базовым знанием для каждого разработчика серверных приложений на Node.js и JavaScript.
Как это работает
npm install трекает зависимости через 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 install: удаление package-lock.json "чтобы сбросить" (пересобираете всё дерево deps, можете втянуть breaking patch); npm install в CI вместо npm ci (lockfile тихо меняется); годами игнорируемые npm audit (CVE копятся); глобальные установки (npm i -g) на shared-машинах (path-коллизии). npx или pnpm dlx — для одноразовых бинарей.