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

时间:2017-07-12 08:35:39

标签: npm npm-install package.json package-lock.json

将我的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之前)使用你的项目,它仍会安装所有依赖项,但版本不太准确(补丁版本)

5 个答案:

答案 0 :(得分:27)

您同时需要package-lock.jsonpackage.json吗?

您需要package.json吗?

您可以有一个仅包含package-lock.json的项目吗?

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

答案 1 :(得分:2)

如果您的问题是锁定文件是否应该提交给您的源代码管理 - 它应该。在某些情况下会被忽略。

我发现它膨胀拉请求和提交历史记录,所以如果你看到它发生变化,就为它做一个单独的提交。

答案 2 :(得分:1)

有关here

的详细解释,说明了保留package-lock.json的原因。

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

 Package.json vs Package.lock.json

enter image description here

enter image description here