使用 package-lock.json 的工作流程

问题描述 投票:0回答:1

好吧,我的工作中有一个 npm 项目,我们中的很多人都在做这个项目。它依赖于“lodash”和“jquery”。

我做了一个

>npm install
,它降低了我的能力。然后我捆绑它。

这会在我的系统上创建一个“package-lock.json”。

现在另一个开发人员添加了对“时刻”的新依赖。

他做了一个

>npm install -S moment
.

将其添加到他的 package.json 中,然后他将其签入。我们不签入 package-lock.json。

现在我执行“

git pull
”并获取新的 package.json。

现在我做

>npm install
,但是因为我有自己的 package-lock.json,它不会为我安装“时刻”。所以现在我必须:

>rm package-lock.json
>npm install

现在我有了“时刻”。似乎这个 package-lock.json 并没有真正帮助我的工作流程。如果我们都在一个通用的 npm 模块上开发,我能解释一下这应该如何为开发人员日常工作吗?

javascript npm workflow
1个回答
2
投票

npm 文档 指出:

此文件旨在提交到源存储库

所以你的工作流程可能如下:

  • 首先,您在完成初始
    package-lock.json
    之后提交
    npm install
  • 另一个开发人员提取您的更改,包括锁定文件。
  • 然后他们做
    npm install moment
    ,这对
    package.json
    package-lock.json
    都进行了更新。开发人员推送这些更改的提交。
  • 现在您拉动他们的更改并执行
    npm install
    。它也应该为您安装
    moment
    。此外,你们现在都安装了完全相同的
    moment
    版本及其依赖项 - 即使在他们和您的安装之间,发布了对某些依赖项的更新(这在您的
    package.json
    中是允许的)。

合并冲突

当你们两个同时安装了新的依赖项然后在

package-lock.json
中发生冲突时,一切都会变得一团糟。这个文件可能很大,手动合并起来会很痛苦。 推荐的处理方式是在
package.json
中手动解决冲突,然后让
npm install
将更改合并到
package.lock
文件中。或者,建议使用
npm-merge-driver
包。

© www.soinside.com 2019 - 2024. All rights reserved.