n1ro°
RU

Текст и данные · Инструкция

npm-shrinkwrap.json vs package-lock.json

Оба формата фиксируют дерево зависимостей, но `npm-shrinkwrap.json` имеет приоритет и может публиковаться, влияя на потр

Редакция N1RO · Проверено

Короткий ответ

Используйте `package-lock.json` для стандартной фиксации установок проекта. Создавайте `npm-shrinkwrap.json` только когда вам осознанно нужно публиковать lock семантику, например для CLI/production application package.

Сравнение

  • Публикация. Допускается к публикации с package. Не предназначен для публикации как lock потребителя
  • Приоритет. Имеет приоритет при наличии обоих. Используется при отсутствии shrinkwrap
  • Типичный сценарий. Пакеты-приложения/CLI, где нужно зафиксировать дерево для потребителя. Обычная разработка приложения и воспроизводимые установки
  • Создание. `npm shrinkwrap` переименовывает/создаёт shrinkwrap на основе lock. Создаётся npm install при включённом package-lock

Как выбрать

  • Если вы не намерены навязывать lock потребителю пакета, оставьте package-lock.json
  • Перед npm shrinkwrap понимайте, что файл станет частью опубликованной семантики

Что учитывать

Условия меняются. Страница отражает состояние на 2026-09-18; при расхождении с официальной документацией приоритет у первоисточника.

Источники и проверка

Фактическая часть сверена по первичным источникам (в т.ч. npm-shrinkwrap). Пример и формулировки — редакция N1RO на 2026-09-18.