intermediate
Lockfiles
Держите разрешение зависимостей воспроизводимым на машинах, в CI, review, audit и release-сборках.
Lockfile фиксирует точный разрешённый граф зависимостей: версии, integrity hashes, вложенные пакеты и иногда метаданные peer resolution. Установки воспроизводимы на ноутбуках, в CI и release-сборках.
| Файл | Менеджер | |------|----------| | `package-lock.json` | npm | | `pnpm-lock.yaml` | pnpm | | `yarn.lock` | Yarn |
Диапазоны в манифесте (`^1.2.0`) — намерение; lockfile — факт. У приложений lockfile в репозитории. У библиотек он может быть для dev/CI, а потребители резолвят свой граф.
# Паттерны CI (концептуально)
npm ci
pnpm install --frozen-lockfile
yarn install --immutable
На интервью: почему одного манифеста мало, как review транзитивных апгрейдов, падения frozen install и security review новых пакетов в диффе lockfile.
Типовые ошибки: случайная регенерация с массовым апгрейдом транзитивов; удаление lockfile «чтобы починить»; несколько менеджеров и расходящиеся lockfile.
Компромисс — воспроизводимость и аудит против merge-конфликтов на крупных обновлениях.
Чеклист:
- Коммитьте lockfile приложений.
- Review транзитивов в PR.
- Frozen/immutable install в CI.
- Регенерация осознанно, не случайно.