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 应用程序需要在第二个选项卡中登录

angular 需要定义model吗

如何仅在 Angular 的一个组件中使用 Bootstrap?

如何在 Angular 2 中使用 Twilio 客户端?