foundation

npm

Используйте npm scripts, package-lock, настройку registry и lifecycle зависимостей в Node-проектах.

npm — менеджер пакетов Node.js по умолчанию и runner для скриптов `package.json`. На интервью важны режимы установки, воспроизводимость lockfile, области зависимостей, lifecycle-скрипты, настройка registry и дисциплина в CI.

| Команда | Типичное применение | |---------|---------------------| | `npm install` | Локальная разработка; может обновить `package-lock.json` | | `npm ci` | CI: установка строго по lockfile, падение при расхождении | | `npm run <script>` | Lifecycle или пользовательские скрипты | | `npm audit` | Известные уязвимости в метаданных |

					{
  "scripts": {
    "build": "tsc -p tsconfig.build.json",
    "test": "vitest run"
  },
  "dependencies": { "express": "^4.21.0" },
  "devDependencies": { "typescript": "^5.8.0" }
}
				

`dependencies` попадают к production-потребителям; `devDependencies` — в dev и CI build/test. `package-lock.json` фиксирует разрешённый граф, включая транзитивные версии и integrity hashes.

На интервью: `npm install` vs `npm ci`, когда review диффа lockfile обязателен, как `preinstall`/`postinstall` влияют на supply-chain, настройка registry и токенов для private packages.

Типовые ошибки: `npm install` в CI с тихим апгрейдом транзитивов; игнор script hooks; смешение lockfile npm с Yarn/pnpm в одном репо.

Компромисс — повсеместность npm и нулевая настройка против более строгих альтернатив, раньше ловящих незадекларированные зависимости.

Чеклист:

  • `npm ci` в CI для приложений.
  • Review диффа lockfile как кода.
  • Разделяйте runtime и dev dependencies.
  • Фиксируйте npm через `packageManager` или образ CI.