Удаление `package-lock.json` для быстрого разрешения конфликтов
В команде, созданной, как правило, я сталкивался с конфликтами слияния в package-lock.json
и мое быстрое решение всегда было удалить файл и восстановить его с npm install
, Я не задумывался всерьез о значении этого исправления, потому что раньше оно не вызывало какой-либо ощутимой проблемы.
Есть ли проблема с удалением файла и npm
воссоздать его таким образом, вместо того, чтобы разрешать конфликты вручную?
4 ответа
Да, это может и очень плохо повлияет на весь проект.
если ваша команда не работает
npm install
после каждогоgit pull
Вы все используете разные версии зависимостей. Так что это заканчивается "но это работает для меня!" и "я не понимаю, почему мой код не работает для вас"даже если вся команда бежит
npm install
это все еще не значит, что все в порядке. в какой-то момент вы можете обнаружить, что ваш проект действует по-другому. в части, которую вы не меняли годами. и после (возможно, довольно болезненной) отладки вы обнаружите, что зависимость из-за 3-го уровня обновлена до следующей основной версии, и это привело к серьезным изменениям.
Вывод: никогда не удаляйте package-lock.json
, в вашем случае лучше сделать следующим образом:
Подход 1
- отменить ваши изменения в
package-lock.json
stash
ваши измененияpull
самая последняя версия кода- бежать
npm install
для всех зависимостей нужно добавить - отменить ваши изменения
Подход 2
- запустить слияние
- для разрешения конфликта выберите стратегию "только изменения"
package-lock.json
- бежать
npm install
поэтому зависимости, которые вы хотите добавить, также включены вpackage-lock.json
- закончить с коммитом коммит
Да, это может иметь плохие побочные эффекты, может быть, не очень часто, но, например, вы можете иметь в package.json "moduleX": "^1.0.0"
и у тебя раньше было "moduleX": "1.0.0"
в package-lock.json
.
Удалив package-lock.json
и бег npm install
вы могли обновлять moduleX до версии 1.0.999, не зная об этом, и, возможно, они создали ошибку или сделали обратное изменение (не следуя семантическому управлению версиями).
Во всяком случае стандартное решение для него уже есть.
- Устранить конфликт внутри
package.json
- Бегать:
npm install --package-lock-only
Я знаю, что это старый вопрос, но для будущих соискателей вы также можете использовать npm-merge-driver, который пытается автоматически решить проблемы слияния файлов, связанных с npm.
Просто установите его глобально npx npm-merge-driver install --global
. Вы можете прочитать об этом здесь npm-merge-driver
Изменить: просто хочу предупредить людей, которые заинтересованы в использовании вышеуказанного пакета, что иногда он может вести себя нестабильно и его трудно удалить. Так что, хотя это полезный инструмент, он все же требует некоторой доработки.