使用 Git 管理 package.json 和包-lock.json
Managing package.json & package-lock.json with Git
我知道您应该将 package-lock.json 添加到您的 git 存储库以确保团队成员使用相同版本的依赖项。
运行 npm install
将检查 package-lock.json 并安装那里指示的版本。如果不存在锁定文件,它将从 package.json 指示的来源安装包。
package.json 也应该添加到您的 git 存储库中吗?
如果不是,克隆回购协议的新团队成员将获得锁定文件,但无法从锁定文件生成 package.json 文件,对吗?
奖金问题:
如何处理 package-lock.json 中的合并冲突?由于它们是机器生成的,我发现这种情况经常发生,而且并不总是很清楚应该如何解决它们。
是的,package.json 也应该包括在内。
除了包含项目元数据并被 npm
所要求外,它还提供了一个清晰简洁的显式依赖关系视图。
关于冲突,最好的选择可能是完全使用其中一个(而不是试图合并)。或者只是从头开始重新创建它。
在添加所有主要依赖项的项目的早期阶段,您可能会遇到很多冲突。
回答您的奖励问题:
有一种方法可以教 Git 自动 'merge' package-lock.json
文件,使用合并驱动程序和 .gitattributes
文件。
TL;DR
运行 在每台开发人员机器上执行一次:
git config --global merge.theirs.name "Keep changes of upstream branch"
git config --global merge.theirs.driver "cp -f '%B' '%A'"
将以下 .gitattributes
文件添加到您的存储库(并提交):
package-lock.json merge=theirs
有关更详细的说明,请参阅 my blog post。
我知道您应该将 package-lock.json 添加到您的 git 存储库以确保团队成员使用相同版本的依赖项。
运行 npm install
将检查 package-lock.json 并安装那里指示的版本。如果不存在锁定文件,它将从 package.json 指示的来源安装包。
package.json 也应该添加到您的 git 存储库中吗?
如果不是,克隆回购协议的新团队成员将获得锁定文件,但无法从锁定文件生成 package.json 文件,对吗?
奖金问题: 如何处理 package-lock.json 中的合并冲突?由于它们是机器生成的,我发现这种情况经常发生,而且并不总是很清楚应该如何解决它们。
是的,package.json 也应该包括在内。
除了包含项目元数据并被 npm
所要求外,它还提供了一个清晰简洁的显式依赖关系视图。
关于冲突,最好的选择可能是完全使用其中一个(而不是试图合并)。或者只是从头开始重新创建它。 在添加所有主要依赖项的项目的早期阶段,您可能会遇到很多冲突。
回答您的奖励问题:
有一种方法可以教 Git 自动 'merge' package-lock.json
文件,使用合并驱动程序和 .gitattributes
文件。
TL;DR
运行 在每台开发人员机器上执行一次:
git config --global merge.theirs.name "Keep changes of upstream branch"
git config --global merge.theirs.driver "cp -f '%B' '%A'"
将以下 .gitattributes
文件添加到您的存储库(并提交):
package-lock.json merge=theirs
有关更详细的说明,请参阅 my blog post。