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