dependencies, devDependencies 和 peerDependencies 之间的区别

2025 年 2 月 25 日 | 阅读 4 分钟

在本文中,我们将学习 dependencies、devDependenciespeerDependencies 之间的区别。 在深入研究区别之前,让我们先了解每个术语。

什么是依赖项?

在 package.json 文件中,有一个名为 dependencies 的对象,它列出了项目中使用的所有包及其版本。因此,每当我们使用对我们的项目有用的任何库时,该库都可以找到 dependencies 对象中。当我们安装一个包作为依赖项时,该包将被记录在特定 package.json 文件的 dependencies 中。

这些是我们应用程序在客户端设备或计算机上正常运行所必需的基本外部要求。这些包通常对我们应用程序的基本操作至关重要。我们的应用程序依赖于多个库和模块来提供其整体功能。

我们可以使用以下命令将包安装为依赖项

什么是开发依赖项?

在 package.json 文件中,有一个名为 devDependencies 的字段,其中列出了项目开发过程中使用的所有包及其版本号,但不一定在生产或测试环境中需要。因此,如果开发过程中只需要任何库,我们可以在 dev Dependencies 对象中找到它。

这些包包含 IDE、测试框架、构建工具以及我们构建、测试或管理应用程序所需的所有其他设备。当应用程序进入生产阶段时,devDependencies 不会被包含,因为它们不促进应用程序的主要功能。

使用以下命令将更多开发依赖项添加到您的项目中

什么是对等依赖项?

PeerDependencies 是我们的包希望存在于用户环境中的包。用户根据需要安装这些包。因此,PeerDependencies 在对应的包部分定义,即 peerDependencies.json 文件。

依赖项、开发依赖项和对等依赖项之间的主要区别

依赖项、开发依赖项和对等依赖项之间存在几个主要区别。一些主要区别如下

特点dependenciesdevDependenciespeerDependencies
目的应用程序要实现时所需的包。创建应用程序的开发和测试阶段所需的包。托管项目所需的包,它确保与依赖包的兼容性。
安装命令它取决于 npm 或 yarn 命令来安装,使用 npm install 或 yarn install。它是通过 npm install 或 yarn install 安装的开源软件。不自动安装;如果未包含,则仅作为警告列出。
范围运行时依赖项。开发依赖项。对等依赖项应安装在托管环境中。
package.json 中的字段dependencies"devDependencies"peerDependencies"
包含在生产中是的,它包含在此应用程序的生产构建中。不,应将其排除在生产构建之外。不,它们必须兼容并且已经包含在托管项目中。
更新频率更新频率较低;仅当它们是某些功能或操作所必需时。更新频繁;它包含构建和评估工具。当需要支持与托管项目版本兼容时进行更新。
示例软件环境、库(例如 React、Express.js)。用于测试目的的库和构建工具(Jest、Webpack 等)。插件、共享库(例如,用于插件的 React:React)。
对应用程序的影响它直接影响应用程序的大小和运行时性能特征。它对该字段的最终应用程序没有影响。它使其兼容并消除版本冲突,但不会影响最终构建。
管理此任务由应用程序执行,不需要额外管理。这由应用程序本身通过其中央控制器处理。在托管应用程序的控制之下。
冲突解决它通常在包含它的包中进行管理。它通常在包本身内管理。托管应用程序必须克服任何版本控制挑战。

结论

在 package.json 文件中,dependencies 是运行应用程序所需的其他包,并且是生产所必需的。这些在 dependencies 对象下定义,并包含应用程序最依赖的库或模块。要将包安装为依赖项,我们使用命令 npm install package-name。 在 devDependencies 中,一些包仅在开发和测试期间需要,例如集成开发环境、测试框架和构建工具等。这些不包含在生产构建中,并使用 npm install package-name save-dev。 Peer dependencies 是我们的包要求用户安装的包,但它们不会自动安装。但是,用户必须单独安装它们以避免兼容性问题。这些在 peerDependencies 对象中声明。这些每个在应用程序的生命周期和环境上下文中都扮演着不同的角色,确保所需的包在需要的时间和地点可用。