Node.js 不同类型的依赖关系是什么
NPM(Node Package Manager) 是Node JavaScript平台的包管理器。它包括一个npm注册表,使开源开发人员能够发布和共享他们的代码。您可能需要安装一些软件包来简化项目。软件包包含其他开发人员编写的代码。 我们的根项目有一个package.json文件,用于跟踪我们安装的所有软件包。此文件包含有关项目的信息,并定义了npm用于安装依赖项、运行脚本和标识包的入口点的属性。
不同类型的依赖关系包括:
- 生产依赖关系
- 开发依赖关系
- 对等依赖关系
- 可选依赖关系
- 捆绑依赖关系
创建package.json文件: 从项目的根目录运行以下命令以创建 package.json文件。
注意: Npm init会提示你输入有关项目的信息,如包名称、版本、测试命令、git仓库、关键词、作者和许可证。
添加包: 以下是安装包的语法:
示例: 运行以下命令来安装express包:
输出: 安装完包后,我们的 package.json 文件将会变成这样。
除了你输入的关于项目的细节,你会注意到 依赖 部分。依赖是项目运行所依赖的库,以实现有效的功能。
1. 生产依赖:
生产依赖是必须的 基本依赖 ,以完成项目。Package.json在key“dependencies”下指定了这些依赖。这些都是项目代码中使用的包。如果一个包在node_modules目录中尚不存在,它会被自动添加。这些是你运行代码时需要的库。例如,要运行一个React项目,你需要react-dom。在我们的生产依赖中,你会找到刚刚安装的express包。
2. 开发依赖:
作为开发人员,你可能想要安装依赖来构建和测试你的网站。开发过程中开发者需要的包被称为开发依赖(devDependencies)。这些依赖项在开发过程中可能会用到,但不会在执行过程中使用。它们不包含在生产版本中,也不会被下载到最终用户的浏览器缓存中。例如,Nodemon、lodash、Babel等。
注意: Nodemon可以在检测到目录中有文件更改时,自动重新启动Node应用程序,帮助开发者创建Node.js应用程序。
添加开发依赖: 通过以下命令,我们将nodemon添加为开发依赖项:
语法: npm install <package_name> --save-dev
示例: npm install nodemon –save-dev下
输出: 让我们来看看我们的 package.json 文件。package.json 文件现在在 dev dependencies 下包括 nodemon 包。
在安装包的过程中,npm会自动安装包的依赖关系和开发依赖关系。除了这些依赖关系,我们还有同级依赖。
3. 同级依赖:
只有在发布自己的包时,你才会遇到同级依赖,即当你开发的代码将被其他程序使用时。
库使用peerDependencies来告诉开发者需要在自己的网站中安装哪些带有确切版本的其他库来使用你的库。 因此,同级依赖也表示兼容性。同级依赖确保代码与安装的包的版本兼容。同级依赖不会自动安装,您需要手动修改package.json文件才能添加同级依赖。
对于像 react 这样的包,这将确保存在一个由安装该包的人使用的react-dom的副本。虽然该包依赖于React,但没有直接依赖。像React和React-dom这样的东西是必需的,但没有被安装。
4. 可选依赖:
顾名思义,可选依赖是在安装应用程序或项目的依赖项时不会导致失败的那些依赖项,因为如果它们失败,npm会忽略它们。无论这些依赖项是否存在,应用程序仍然可以正常运行。将依赖项作为可选项添加可以加快Node项目的安装过程。然而,并非所有依赖项都可以真正是可选的。
将依赖项添加为可选项: 我们可以使用以下命令将依赖项设置为可选:
示例: 例如,我们将安装 chalk包 作为一个可选依赖项。使用chalk库,我们可以轻松地对终端输出强制使用颜色和样式。
你会在 package.json 文件的 “optionalDependencies” 键下找到你的包。
5. 捆绑的依赖项:
发布包时,这些依赖项会随之捆绑。NPM包可以在本地保留,或者可以从单个文件中下载。例如,express, request包可以捆绑在一起。
BundledDependencies被列为一个数组,没有版本号。捆绑的依赖项与普通依赖项具有相同的功能。当普通依赖项不足时,捆绑的依赖项很有用。它们很少被使用。