> В чем разница package-lock.json и package.json (JavaScript)

Уровень: middle · Роль: frontend · Категория: Технические вопросы

Компании: ВСК, Сбер

Стек: JavaScript

> Пример ответа

package.json - это манифест проекта, в котором вы вручную указываете зависимости с диапазонами версий (например, "express": "^4.18.0"). Он определяет, какие пакеты нужны, но не фиксирует точные версии.

package-lock.json автоматически генерируется npm и содержит точное дерево зависимостей: для каждого пакета указана конкретная версия, хеш целостности и все транзитивные зависимости. Он гарантирует, что при установке на разных машинах (или в CI) получится идентичный набор модулей.

Ключевые различия:

  • Назначение: package.json - для описания проекта и его зависимостей; package-lock.json - для блокировки точных версий.

  • Управление: первый редактируется разработчиком, второй - только npm.

  • Обязательность: package.json обязателен для проекта; package-lock.json рекомендуется к коммиту в репозиторий, но не обязателен для работы (хотя без него возможны расхождения в версиях).

  • Содержимое: в package.json - диапазоны версий; в package-lock.json - полное разрешённое дерево с хешами.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью