我是否需要package-lock.json和package.json?


149

将我的NPM更新到最新版本(从3.X到5.2.0)并npm install在现有项目上运行后,我得到了一个自动创建的package-lock.json文件。

我可以告诉package-lock.json给我一个确切的依赖树,而不是package.json

仅从该信息来看,似乎package.json是多余的,不再需要。

它们都是NPM运作所必需的吗?
仅使用该package-lock.json文件是否安全?

package-lock.json(doc1doc2)上的文档未提及任何内容。

编辑

经过一番思考之后,我得出的结论是,如果有人想将您的项目与NPM的较旧版本(5.x之前)一起使用,它将仍然安装所有依赖项,但版本不那么准确(补丁版本)


Answers:


103

您是否同时需要package-lock.jsonpackage.json没有

您需要package.json吗?是的

您可以仅拥有一个项目package-lock.json吗?没有

不仅package.json用于依赖项-例如定义项目属性,描述,作者和许可证信息,脚本等。package-lock.json只能用于将依赖项锁定到特定的版本号。


19

package-lock.json:记录每个已安装软件包的确切版本,以便您重新安装它们。将来的安装将能够构建相同的依赖关系树。

package.json:记录您的应用所需的最低版本。如果您更新特定软件包的版本,则更改不会在此处反映出来。


1
如果以上内容是正确的,并且package.json记录了应用程序所需的最低版本,并且package-lock.json记录了每个已安装软件包的确切版本,那么我遇到了一个奇怪的情况,其中模块设置为软件包中的0.112.1版本以.json和封装lock.json 0.110.0 ...
让·弗朗索瓦·比彻姆

6

如果您的问题是是否应将锁定文件提交给源代码控制,则应该这样做。在某些情况下它将被忽略。

我发现它膨胀了请求请求和提交历史记录,因此,如果您发现它有所更改,请对其进行单独的提交。


1
不,我不是在问对源代码管理的承诺。就像NPM需要同时使用这两个工具一样package-lock.json似乎是的更详细的版本package.json,因此仅使用锁定文件是否安全或可行。
奥姆里·吕宋

我知道,我已经在我的项目中保留了package.json,主要是为了放置npm脚本。
斯坦利·基尔德

1
现在是否存在版本控制还有一个单独的问题package-lock.json
阿德里安W

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.