好吧,我的工作中有一个 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 模块上开发,我能解释一下这应该如何为开发人员日常工作吗?
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
包。