Angular 应用程序中需要 package.json、package-lock.json 文件
Posted
技术标签:
【中文标题】Angular 应用程序中需要 package.json、package-lock.json 文件【英文标题】:Need for both package.json, package-lock.json files in an angular application 【发布时间】:2019-07-18 17:08:21 【问题描述】:我是新来的。当我使用 angular-cli 安装示例 Angular 应用程序时,我看到了 package.json 和 package-lock.json 文件的定义。在这些文件中,package-lock.json 文件定义了确切的依赖关系,而 package.json 有其他主要事实,如作者、描述、关键字等。我发现这个相关的 link 很有用。
我的疑问是为什么 package-lock.json 中详述的数据也包含在 package.json 文件中,这样就不需要两个单独的 package json 文件。两个具有相似数据的文件可能会让人感到困惑,尤其是对于初学者来说,对吧?
【问题讨论】:
【参考方案1】:补充阅读:
Everything You Wanted To Know About package-lock.json But Were Too Afraid To Ask
https://github.com/npm/npm/pull/17508
Package-lock 是 package.json 中列出的每个依赖项的大列表,应安装的特定版本,模块的位置 (URI),验证模块完整性的哈希,列表它需要的包,以及依赖项列表。
因为包锁为每个模块及其每个依赖项指定了版本、位置和完整性哈希,所以它创建的安装每次都是相同的。不管你在什么设备上,或者你以后什么时候安装,它应该每次都给你相同的结果,这非常有用。
【讨论】:
【参考方案2】: 对于 npm 修改 node_modules 树或 package.json 的任何操作,Package-lock.json 会自动生成。它描述了生成的确切树,以便后续安装能够生成相同的树,而不管中间依赖项更新如何。
欲了解更多信息,请参阅下面的链接。
"package-lock.json" role
【讨论】:
【参考方案3】:https://docs.npmjs.com/cli/v7/configuring-npm/package-json
package.json 是一个 JSON 文件,位于您的根目录中 项目。您的 package.json 包含有关 项目。它包含有关项目的人类可读元数据(例如 项目名称和描述)以及功能元数据,如 包版本号和所需的依赖项列表 申请。
https://docs.npmjs.com/cli/v7/configuring-npm/package-lock-json
package-lock.json 会自动为任何操作生成 npm 修改 node_modules 树或 package.json。它 描述了生成的确切树,以便后续 安装能够生成相同的树,无论 中间依赖更新。
此文件旨在提交到源存储库中,并且 有多种用途:
描述依赖树的单一表示,以保证团队成员、部署和持续集成 安装完全相同的依赖项。 为用户提供“时间旅行”到 node_modules 先前状态的工具,而无需提交目录 本身。 通过可读的源代码控制差异提高对树更改的可见性。 通过允许 npm 跳过以前安装的包的重复元数据解析来优化安装过程。从 npm v7 开始,锁定文件包含足够的信息来获得完整的 包树的图片,减少读取 package.json 的需要 文件,并允许显着提高性能。
【讨论】:
以上是关于Angular 应用程序中需要 package.json、package-lock.json 文件的主要内容,如果未能解决你的问题,请参考以下文章
Angular 应用程序中需要 package.json、package-lock.json 文件
如何使用 package.json 调用设置环境变量并让其他脚本和命令可以访问这些变量的脚本
带有 oidc-client.js 的 Angular 应用程序需要在第二个选项卡中登录