代码之家  ›  专栏  ›  技术社区  ›  yevg

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

  •  0
  • yevg  · 技术社区  · 6 年前

    我知道你应该加上 package-lock.json包 以确保团队成员使用相同版本的依赖项。

    跑步 npm install 将检查 package-lock.json包 并安装此处指示的版本。如果锁文件不存在,它将从源安装软件包,如 包.json .

    应该 包.json 也被添加到你的git回购协议中,然后呢?

    如果不是,克隆repo的新团队成员将获得锁文件,但是 包.json 无法从锁定文件生成文件,对吗?

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   Gonzalo Matheu    6 年前

    对, 包.json 也应该包括在内。 除了包含项目元数据和 npm ,它提供了 清晰简洁的显式依赖关系视图 .

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

        2
  •  1
  •   Martin Poelstra    6 年前

    回答你的奖金问题:

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

    TL;博士

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

    git config --global merge.theirs.name "Keep changes of upstream branch"
    git config --global merge.theirs.driver "cp -f '%B' '%A'"
    

    添加以下内容 .gittattributes属性 提交至回购协议(并提交):

    package-lock.json merge=theirs
    

    my blog post 更详细的解释。