foundation
Установка зависимостей
Устанавливайте зависимости воспроизводимо из lockfile с зафиксированным менеджером пакетов и без скрытого локального состояния.
Шаг install доказывает, что репозиторий восстанавливается из версионированных входов: `package.json`, lockfile, версия менеджера пакетов и настройка registry. Он должен быть детерминированным, не менять lockfile и не полагаться на локальные незадекларированные зависимости.
| Команда | Когда | |---------|------| | `npm ci` | CI: точная установка по lockfile, падение при расхождении | | `pnpm install --frozen-lockfile` | То же для pnpm | | `yarn install --immutable` | То же для Yarn Berry |
# Эскиз GitHub Actions
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- run: npm ci
Зафиксируйте менеджер пакетов через `packageManager` в корневом `package.json` или Corepack, чтобы ноутбуки и CI использовали одну версию инструмента. Ключи кэша должны хешировать lockfile и платформенные входы, влияющие на resolution.
На интервью: frozen lockfile, CI-режимы pnpm/npm/Yarn, Corepack, кэш зависимостей, auth для private registry и почему локальный `node_modules` не является источником истины.
Типовые ошибки: кэш `node_modules` со слабыми ключами скрывает дрейф зависимостей; разрешение CI переписывать lockfile ломает воспроизводимость; разные менеджеры пакетов на машинах.
Компромисс — скорость установки (кэш) против воспроизводимости и раннего обнаружения незадекларированных зависимостей.
Чеклист:
- В CI — режим установки с принудительным lockfile.
- Фиксируйте поведение менеджера пакетов.
- Ключи кэша по lockfile и платформе.
- Review диффа lockfile как кода приложения.