好的,所以我的工作中有一个npm项目,我们很多人都在努力。它依赖于'lodash'和'jquery'。
我做了一个>npm install
,它拉下了我的deps。然后我捆绑它。
在我的系统上创建一个'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模块上开发,我能否解释一下这对日常开发人员应该如何运作?
答案 0 :(得分:0)
首先,根据npm documentation:
此文件旨在提交到源存储库
所以你应该在完成package-lock.json
之后提交初始npm install
。
另一位开发人员会提取您的更改,包括锁定文件。
然后他npm -S moment
package.json
,对package-lock.json
和npm install
进行更新。开发人员通过这些更改推送提交。
现在你拉出他的变化并做moment
。它应该为您安装moment
。此外,你们现在应该拥有完全相同版本的package-lock.json
并安装它的依赖项 - 即使他和你的安装之间的某些依赖项的次要版本增加了。
当你们两个并行安装新的依赖项然后在package.json
上发生冲突时,一切都变得混乱。这可能是一个巨大的文件,手动合并相当痛苦。我没有看到记录任何官方处理它的方式。甚至还有一个open issue in npm repo来解决冲突。
一位用户在其中的问题主题中分享了他的workaround workflow,这基本上意味着:通过从主服务器中提取package-lock.json
和npm install -S
覆盖您的本地更改,然后应用所有npm remove -S
}和INSERT INTO JOB_HISTORY
VALUES(200001, ('1970/10/01'), ('2035/09/30'), 'IT3', 1003);
命令再次。在npm解决问题之前,这似乎是一个合理的解决方案。