📜  依赖关系、devDependencies 和 peerDependencies 之间的区别(1)

📅  最后修改于: 2023-12-03 15:36:42.646000             🧑  作者: Mango

依赖关系、devDependencies 和 peerDependencies 之间的区别

在开发Node.js项目以及其他软件的过程中,我们通常需要使用到很多第三方库(也称为模块)。这些第三方库可以通过NPM(即Node.js Package Manager)来下载和安装,在安装第三方库时,我们通常会遇到三种依赖关系:依赖关系、devDependencies和peerDependencies。这三种依赖关系之间有什么区别呢?接下来我们将分别来介绍一下。

依赖关系(dependencies)

当我们在开发一个软件时,通常会用到一些第三方库,这些第三方库我们称之为依赖。在对自己开发的程序进行部署时,如果依赖的库没有安装,则程序将无法正常工作。所以,依赖是开发和部署一个软件必不可少的一部分。

当我们在使用NPM安装某个库时,如果把--save参数传递给NPM,那么这个库就会被保存到我们的依赖列表里,例如:

npm install --save lodash

这样,Lodash库就会被保存到我们的依赖列表里,我们可以在程序中使用Lodash库的所有功能。当我们部署程序时,如果Lodash库没有安装,程序就无法正常运行。

devDependencies

除了依赖之外,有些库只需要在开发时使用,而在部署时并不需要用到,这些库就是devDependencies。例如,Jest测试库就是一个devDependencies,我们在开发单元测试时会用到它,但是在部署程序时是不需要的。

当我们在使用NPM安装某个库时,如果把--save-dev参数传递给NPM,那么这个库就会被保存到我们的devDependencies列表里,例如:

npm install --save-dev jest

这样,Jest库就会被保存到我们的devDependencies列表里,我们可以在开发单元测试时使用它。但是,在部署程序时,Jest库是不需要的。

peerDependencies

有些库需要依赖于我们自己的程序中的某个库才能正常工作,这些库就是peerDependencies。例如,如果我们编写一个库,这个库需要依赖于Lodash库,而我们自己的程序中也依赖于Lodash库,这时我们就可以将Lodash库作为peerDependencies。

当我们在使用NPM安装某个库时,如果把--peer参数传递给NPM,那么这个库就会被保存到我们的peerDependencies列表里,例如:

npm install --peer lodash

这样,Lodash库就会被保存到我们的peerDependencies列表里,我们的库就可以依赖于我们自己程序中的Lodash库了。

总结一下,依赖关系、devDependencies 和 peerDependencies,这三种依赖关系在开发和部署软件时起到了各自的作用。依赖关系是程序运行所必需的;devDependencies只用于开发过程,并不会被部署;peerDependencies是用于我们自己编写的库,它需要依赖于我们自己程序中的某个库。