Текст и данные · Инструкция
npm-shrinkwrap.json vs package-lock.json
Оба формата фиксируют дерево зависимостей, но `npm-shrinkwrap.json` имеет приоритет и может публиковаться, влияя на потр
Короткий ответ
Используйте `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.