Skip to content

dependencies、devDependencies、peerDependencies三者的区别

Published: at 02:58

目前的前端项目基本上不直接去写htmlcssjs三件套了,而是使用工程化,通过包的方式引入依赖项,借助于打包工具输出最终代码。 对于依赖项的安装,package.json中有三种安装方式,dependenciesdevDependencies大家应该都能搞懂,我是一直对peerDependencies一知半解,于是学习并简单记录下。

dependencies

dependencies是生产中的依赖。通常dependencies下的依赖项会随着打包工具将代码打包到生产代码中,也就是线上实际要运行的代码。

例如一个vue框架的项目,必要的dependencies依赖项有:

若要将依赖项安装到dependencies下,可以使用相应的包管理器安装,例如安装dep-lib这个包

# npm
npm install dep-lib
# or
npm install dep-lib --save

# yarn
yarn add dep-lab

# pnpm
pnpm add dep-lab
# or
pnpm add dep-lab --save-prod
# or
pnpm add dep-lab -P

devDependencies

devDependencies是开发中的依赖。通常devDependencies下的依赖项并不需要被打包到线上运行,属于开发过程中的工具。 例如:webpackviteeslintpritterjest等等。

若要将包安装到devDependencies,可使用包管理器安装

# npm
npm install dep-lab -D
# or
npm install dep-lab --save-de

# yarn
yarn add dep-lab -D
# or
yarn add dep-lab --dev

# pnpm
pnpm add dep-lab -D
# or
pnpm add dep-lab --save-dev

peerDependencies

peerDependencies是对等依赖。在业务开发中我们一般不会用到它,使用它的场景是在开发库或框架的时候。 比如说一个库dep-lab使用Typescript开发,并且使用Typescript的版本为4.0.0,这个库的作者期望用户或者说用户若要使用dep-lab这个库,项目中Typescript的版本必须>=4.0.0,这种情况下就需要使用peerDependencies来约束。

{
  "peerDependencies": {
    "typescript": ">=4.0.0"
  }
}

一般来说对等依赖项的版本应该放宽,只需要要满足库当前版本所使用的安全版本即可。

若要将包安装到peerDependencies,可使用包管理器安装

# npm
npm install dep-lab --save-peer

# yarn
yarn add dep-lab --peer

总结

什么样的依赖项还是要遵守规则安装在应该在模块下,随意安装是很容易导致bug的出现。