Если вы, как веб-разработчик, используете Диспетчер пакетов узлов (NPM), вы сталкиваетесь с этими двумя файлами. Так что это, черт возьми, и зачем они нам нужны?

Что такое Package.json?

package.json - это главный и сердцевина проекта, где вы видите все зависимости, а также версии, которые вы используете в своем проекте.

Затем А как насчет Package-lock.json?

Это файл, в котором отслеживаются все версии, чтобы поддерживать согласованность между другими разработчиками, которые сотрудничают с вашим проектом.

Хорошо, это нормально для определения 😀.

НО, давайте углубимся в эти файлы и как это работает?

Предположим, вы работаете над проектом и используете NPM для установки пакетов. И, как вы знаете, будут сгенерированы два файла, как только вы начнете устанавливать пакеты, которые используются для вашего проекта.

Допустим, вы установили в свой проект один пакет.

npm install [email protected] -S
Примечание: здесь я просто беру element-ui в качестве примера.

Итак, вы установили его, а также видите некоторые версии зависимостей для установленного пакета (element-UI) в package-lock.json. Подумайте, все они необходимы для запуска вашего пакета в вашем проекте.

Пока все хорошо. Из-за завышенных требований нужен еще один ресурс, который поможет вам в проекте.

Другой разработчик должен иметь

  1. те же пакеты с теми же версиями, которые используются в вашем проекте.
  2. Самое главное, эти пакеты должны совпадать с вашим
    (потому что вы являетесь владельцем проекта 😝).

Кажется, это просто: заархивируйте файл и поделитесь им с ресурсом, который все, а также самый важный узел в системе ресурсов. < br /> Примечание: заархивируйте свой проект вместе с node_modules

Это нормально, когда вы оба работаете на одном месте. но когда дело доходит до удаленных мест, вам очень сложно отправить zip-файл, которого может быть слишком много для публикации в Интернете. Не кажется ли вам глупым заархивировать свой проект вместе с node_modules и поделиться им?

Тогда что здесь можно сделать?

Так просто, просто поделитесь zip-файлом вместе с кодом вашего проекта, package.json, package-lock.json, исключая node_modules. Теперь ваш zip-архив составляет примерно менее 1 МБ.
Теперь, что должен сделать ваш товарищ по команде, просто распакуйте и запустите npm install
вот и все, проект будет работать с теми же пакетами и с одинаковыми версиями. это то, что мы хотели правильно.
Но как это возможно? Как узел узнал, что нужно установить эти пакеты в ваш проект? Это только из-за ваших package.json и package-lock.json.

Требуются ли нам как package.json, так и package-lock.json?

Ответ - нет. Вы также можете устанавливать свои пакеты, только имея при себе файл package.json. Тогда зачем нам файл package-lock.json?
Хорошо !! Давайте узнаем и это
Чтобы понять это, давайте сначала узнаем ^ & ~
Эти два знака обычно видны в вашем файле package.json, что они означают?

~ → что означает, что он обновит ваш проект будущими версиями исправлений, когда вы запустите npm install.

^ → это означает, что он обновит ваш проект будущими исправлениями / дополнительными версиями при запуске npm install.

Бла Бла Бла 😅
что все это значит?
версии патча означают, что если вы установили v1.2.0, здесь
1 → Major
2 → Minor
0 → патч
Я не собираюсь здесь углубляться, но наличие базовой идеи всегда является плюсом.
Если есть исправление ошибки, обычно они охватываются версиями патча
Если есть функция вместе с обратная совместимость, обычно они считаются второстепенными выпусками.
Если есть функция, а также нет обратной совместимости, то это считается основным выпуском.

Пока этих знаний достаточно, чтобы понять текущий сценарий нашего блога 😄.
Давайте вернемся к нашей теме. Теперь, если вы поделитесь package.json только со своим товарищем по команде и попросите его / его запустить npm install, что произойдет здесь? Любые догадки…
Ничего не происходит, вы увидите новый сгенерированный файл package-lock.json, и ваш проект работает нормально, но здесь есть несколько проблем.
Если ваш файл package.json содержит «~ 1.2.0» или ^ 1.2.0 ”
, когда ваш товарищ по команде запускает npm install.
К тому времени, если ваши пакеты имеют обновленные версии, то эти обновленные версии будут включены в его систему, что означает, что в одном из ваших пакетов произошел второстепенный выпуск, а версия - 1.3.0
, поэтому 1.3.0 будет установлена ​​в вашей системе товарищей по команде.

Хорошо, тогда что происходит с вашим проектом? Ничего не происходит с вашим существующим проектом, потому что, поскольку будет обратная совместимость, ваш проект будет работать нормально и так же, как ваш, но если ваш товарищ по команде начинает код и использует некоторую функцию, которая недавно была введена в пакете 1.3 .0, и эта конкретная вещь с вами не работает.

Так что это будет своего рода угрозой для вашего проекта.

Если вас не беспокоят патчи или второстепенные выпуски, вы можете продолжить, поделившись package.json со своим коллегой.

Последний вердикт:
Совместное использование файлов package.json и package-lock.json с вашим товарищем по команде - лучший способ сохранить ваш проект в том же русле, что и ваша команда.

Надеюсь, этот блог развеет все ваши сомнения, связанные с package.json и
package-lock.json.
Если он вам нравится, хлопните в ладоши и поделитесь им с друзьями.
Итак, он тоже может кому-то помочь.

Спасибо всем.
До следующего раза,
Удачного обучения 😃.