管理package.json&;带有Git的package-lock.json

管理package.json&;带有Git的package-lock.json,json,git,npm,node-modules,dependency-management,Json,Git,Npm,Node Modules,Dependency Management,我知道您应该向git repo添加package lock.json,以确保团队成员使用相同版本的依赖项 运行npm install将检查包锁.json,并安装此处指示的版本。如果锁文件不存在,它将按照package.json所示从其源安装包 那么,package.json也应该添加到您的git回购中吗 如果没有,克隆回购协议的新团队成员将获得锁文件,但无法从锁文件生成package.json文件,对吗 奖金问题: 如何处理包锁.json中的合并冲突?由于它们是机器生成的,我发现这种情况经常发生

我知道您应该向git repo添加package lock.json,以确保团队成员使用相同版本的依赖项

运行
npm install
将检查包锁.json,并安装此处指示的版本。如果锁文件不存在,它将按照package.json所示从其源安装包

那么,package.json也应该添加到您的git回购中吗

如果没有,克隆回购协议的新团队成员将获得锁文件,但无法从锁文件生成package.json文件,对吗

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

是的,package.json也应该包括在内。 除了包含项目元数据和
npm
所需之外,它还提供了一个清晰简洁的显式依赖关系视图

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

要回答您的额外问题:

有一种方法可以教Git使用合并驱动程序和
.gittributes
文件自动“合并”package lock.json文件

TL;博士

在每台开发人员计算机上运行一次:

git config --global merge.theirs.name "Keep changes of upstream branch"
git config --global merge.theirs.driver "cp -f '%B' '%A'"
将以下
.gittributes
文件添加到您的repo(并提交):


请参阅以获取更详细的解释。

package.json
是必需的-如果您希望添加包,它将需要使用
package.json
-更不用说它包含用于对所用包和项目属性(命令、项目位置等)进行人类可读分析的中心位置,更不用说,您不能拥有一个只有
包的项目。json
-npm不知道为新开发人员安装后该做什么
package-lock.json merge=theirs