我需要两个包锁吗?Json和package.json?

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

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

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

这两个都是NPM工作所必需的吗?
只使用package-lock.json文件是否安全或可能?< / p >

关于包锁的文档。json (doc1doc2)没有提到任何关于这一点。

编辑:

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

148805 次浏览

如果你的问题是锁文件是否应该提交到你的源代码控制-它应该。在某些情况下,它会被忽略。

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

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

你需要package.json吗?是的

你能有一个只有package-lock.json的项目吗?没有

package.json不仅仅用于依赖关系——比如定义项目属性、描述、作者和amp;许可信息、脚本等。package-lock.json仅用于锁定对特定版本号的依赖关系。

package-lock.json:记录每个安装包的确切版本,允许您重新安装它们。以后的安装将能够构建相同的依赖树。

package.json:记录应用程序所需的最小版本。如果您更新了特定包的版本,则更改不会反映在这里。

更准确和详细地解释了保留包锁的原因。json可以在在这里中找到

 Package.json vs Package.lock.json

enter image description here

enter image description here