📜  Node.js 中有哪些不同类型的依赖项?

📅  最后修改于: 2022-05-13 01:56:50.286000             🧑  作者: Mango

Node.js 中有哪些不同类型的依赖项?

NPM (Node Package Manager)是 Node JavaScript 平台的包管理器。它由一个 npm 注册表组成,使开源开发人员能够发布和共享他们的代码。您可能需要安装一些软件包来简化您的项目。包包含其他开发人员编写的代码。 我们的根项目有一个package.json文件,用于跟踪我们安装的所有包。此文件包含有关项目的信息并定义 npm 用于安装依赖项、运行脚本和识别包的入口点的属性。

不同类型的依赖项是:

  • 生产依赖
  • 开发依赖
  • 对等依赖
  • 可选依赖项
  • 捆绑的依赖项

创建Package json文件:在项目根目录下运行以下命令创建package.json文件。

npm init 

注意: npm init 会提示您输入有关项目的信息,例如包名称、版本、测试命令、git 存储库、关键字、作者和许可证。

创建一个 package.json 文件

添加包:以下是安装包的语法:

npm install 

示例:运行以下命令安装express包:

npm install express

安装 Express(Express 是一个 node.js 框架)

输出:安装包后,我们的package.json文件将如下所示。

包.json 文件

除了您输入的有关项目的详细信息外,您还会注意到依赖项部分。依赖项是项目有效函数所依赖的库。

1. 生产依赖性:

生产依赖项是完成项目所需的基本依赖项。 Package.json在关键“依赖项”下指定这些依赖项。这些是项目代码中使用的包。如果node_modules目录中尚不存在包,则会自动添加该包。这些是您运行代码时需要的库。例如,要运行一个反应项目,你需要react-dom 。在我们的生产依赖中,你会找到我们刚刚安装的 express 包。

2. 开发依赖:

作为开发人员,您可能希望安装依赖项来构建和测试您的网站。开发人员在开发过程中需要的包称为 devDependencies。在开发过程中的某个时刻可能需要的依赖项,但在执行期间不需要。它们不包含在生产版本中,也不会下载到最终用户的浏览器缓存中。例如, Nodemon、lodash、Babel 等等。

注意: Nodemon 通过在目录中检测到文件更改时自动重新启动节点应用程序来帮助开发人员创建 node.js 应用程序。

添加 dev 依赖:通过使用以下命令,让我们添加 nodemon 作为 dev 依赖:

Syntax: npm install  --save-dev
Example: npm install nodemon --save-dev

安装 Nodemon

输出:让我们看看我们的package.json文件。 package.json 文件现在包含 dev 依赖项下的 nodemon 包。

安装 nodemon 后的 package.json 文件

当你安装一个包时,npm 会自动安装包的依赖和开发依赖。除了这些依赖之外,我们还有对等依赖。

3. 同行依赖:

唯一会遇到对等依赖的情况是发布自己的包时,即,当您开发将被其他程序使用的代码时。 库使用 peerDependencies 来告诉开发人员需要在他们自己的网站上安装哪些具有确切版本的库才能使用您的库。 因此,对等依赖关系也表达了兼容性。 peerDependencies 确保代码与安装的包的版本兼容。 peerDependencies 不会自动安装。您需要手动修改 package.json 文件以添加对等依赖项。

对于像这样的包 react ,这将确保有一个 react-dom 副本,安装包的人也使用该副本。即使包依赖于 React,它也没有直接的依赖关系。诸如 React 和 React-dom 之类的东西是必需的,但没有安装。

4. 可选依赖项:

顾名思义,可选依赖项是那些在安装应用程序或项目的依赖项期间不会导致失败的依赖项,因为如果它们失败,npm 将忽略它们。无论这些依赖项是否存在,应用程序仍然可以正常运行。添加依赖项作为可选可以加快 Node 项目的安装过程。但是,并非所有依赖项都可以是可选的。

添加依赖项作为可选:我们可以使用以下命令使依赖项成为可选:

npm i package_name --save-optional

示例:例如,我们将安装chalk 包作为可选依赖项。使用 chalk 库,我们可以轻松地在终端输出上强制执行颜色和样式。

npm i chalk --save-optional 

安装粉笔

您将在 package.json 的“optionalDependencies”键下找到您的包。

optionalDependencies 下的粉笔包

5. 捆绑依赖:

发布包时,这些依赖项与它捆绑在一起。 NPM 包保存在本地,也可以从单个文件中下载。例如,可以捆绑快递、请求包。

BundledDependencies 被列为一个数组,没有版本。捆绑的依赖项具有与普通依赖项相同的功能。当正常依赖不足时,捆绑依赖可能会很有用。它们很少使用。