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.