使用Git管理package.json和package-lock.json

时间:2019-04-15 18:20:18

标签: json git npm node-modules dependency-management

我知道您应该将 package-lock.json 添加到您的git仓库中,以确保团队成员使用相同版本的依赖项。

运行npm install将检查 package-lock.json 并安装此处指示的版本。如果没有锁定文件,它将按照 package.json 的指示从源安装软件包。

然后也将 package.json 也添加到您的git仓库中吗?

如果没有,那么克隆回购协议的新团队成员将获得锁定文件,但是不能从锁定文件生成 package.json 文件,对吗?

奖金问题: 如何在 package-lock.json 中处理合并冲突?由于它们是机器生成的,因此我发现这种情况经常发生,而且并不总是很清楚应该如何解决。

2 个答案:

答案 0 :(得分:1)

是的,还应该包含 package.json 。 除了包含项目元数据并由npm所要求之外,它还提供了简洁明了的显式依赖关系视图

关于冲突,最好的选择可能是完全使用其中之一(不尝试合并)。或者只是从头开始重新创建它。 在项目的早期阶段,您可能会遇到许多冲突,在该阶段中,所有主要依赖项都在添加中。

答案 1 :(得分:1)

要回答您的奖励问题:

有一种方法可以教Git使用合并驱动程序和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