将我的 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 之前)一起使用,它仍然会安装所有依赖项,但版本不太准确(补丁版本)
您需要 package-lock.json
和 package.json
吗? 否。
您需要 package.json
吗? 是的。
你能有一个只有 package-lock.json
的项目吗? 否。
package.json
不仅仅用于依赖项 - 例如定义项目属性、描述、作者和许可证信息、脚本等。package-lock.json
仅用于将依赖项锁定到特定版本号。
package-lock.json
:记录每个已安装软件包的确切版本,以便您重新安装它们。未来的安装将能够构建一个相同的依赖树。
package.json
:记录您应用所需的最低版本。如果您更新特定软件包的版本,则更改不会在此处反映出来。
package.json
记录了应用程序所需的最低版本,并且 package-lock.json 记录了每个已安装包的确切版本,那么我遇到了一个奇怪的情况,即模块设置为 0.112 版本。 package.json 中的 1 和 package-lock.json 中的 0.110.0 ...
Package.json vs Package.lock.json
https://i.stack.imgur.com/pSzRD.png
https://i.stack.imgur.com/CnIxx.png
如果您的问题是是否应该将锁定文件提交给您的源代码管理 - 它应该。在某些情况下会被忽略。
我发现它膨胀了拉取请求和提交历史,所以如果你看到它发生变化,请为它做一个单独的提交。
package-lock.json
似乎是 package.json
的更详细版本,因此仅使用锁定文件是否安全或可能。
package-lock.json
置于版本控制之下的 separate question。
不定期副业成功案例分享
package-lock.js
安装依赖项 - 请参阅 docs.npmjs.com/cli/v8/commands/npm-ci