Info
Content

package.json | package-lock.json

package.json

Файл package.json это сердце node.js
Это манифест любого node.js проекта который содержит его метаданные такие как:

  • name - имя пакета (важно если ты планируешь публиковать пакет)
  • version - второй по важности аттрибут
  • scripts - содержит часто используемые при работе с проектом команды
  • dependencies - список зависимостей проекта с именами пактов и диапазоном допустимых версий

package-lock.json

Файл package-lock.json генерируется автомтически при любой операции где npm изменяет дерево node_modules или package.json
Он описывает полное дерево зависимостей

Этот файл должен быть закоммичен в репозиторий для следующих задач:

  • Описывает единое представление дерева зависимостей, так мы получаем гарантии что коллеги, деплой и ci будут иметь точно одинаковые зависимости в проекте
  • Дает возможность "путешесвовать во времени" к предыдущим состояниям node_modules без необходимости коммитить node_modules
  • Способствует лучшей прозрачности изменений в дереве зависимостей
  • Оптимизирует процесс установки зависимостей, позволяя npm пропускать процесс разрешения зависимостей и поиска нужных пакетов для установки
  • Начиная с npm v7 локфайл включает достаточно информации для получения полной картины о дереве пакетов, понижая необходимость читать package.json

Есть еще npm-shrinkwrap.json, он имеет такой же синтаксис как package-lock.json и решает похожии проблемы, но в отличие от package-lock.json он может быть опубликован (имеется ввиду вместе с пакетом)

Бывают "скрытые" локфайлы - node_modules/.package-lock.json. Они нужны чтобы избежать полной повторяющейся обработки папки node_modules

No Comments
Back to top