将我的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(doc1,doc2)上的文档并未提及任何相关内容。
修改:
经过一番思考之后,我得出的结论是,如果有人想要使用旧版本的NPM(5.x之前)使用你的项目,它仍会安装所有依赖项,但版本不太准确(补丁版本)
答案 0 :(得分:27)
您同时需要package-lock.json
和package.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)