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 как кода приложения.