PassFront
  1. PassFront
  2. База знаний
  3. Модули и пакеты

Зачем нужны package.json и package-lock.json и чем отличаются dependencies и devDependencies?

Модули и пакеты

`package.json` описывает проект и допустимые диапазоны версий зависимостей, `package-lock.json` фиксирует точное дерево установленных версий.

Что внутри package.json

  • name, version, scripts, main или exports, type.
  • dependencies — нужны приложению в рантайме.
  • devDependencies — только для разработки и сборки: линтеры, тесты, компиляторы.
  • peerDependencies — пакет рассчитывает, что версия будет у потребителя (например, React у библиотеки компонентов).

Зачем lock-файл

Диапазон ^1.2.0 через месяц даст другую версию, и сборка перестанет быть воспроизводимой. Lock-файл фиксирует версии и хэши, поэтому на CI ставят зависимости через npm ci: он берёт ровно то, что записано, и падает при расхождении.

npm ci          # чистая установка по lock-файлу, для CI
npm install     # может обновить lock-файл
npm ci --omit=dev  # без devDependencies, для образа в production

Коротко для собеседования

package.json — что нужно, lock-файл — что именно поставили. Lock-файл коммитят, на CI используют npm ci, а в production не тянут devDependencies.

Другие вопросы раздела