前端面试题库

dependencies、devDependencies和peerDependencies的特点

dependenciesdevDependenciespeerDependencies更新时间:2024-09-13 08:10:04

答案

dependencies

如果一个依赖是src源码中会使用的,那么它可能放到2个地方dependencies,或者devDependencies + peerDependencies

  1. 在业务开发中需要在src源码中使用的放在dependencies
  2. npm 包开发中,根据实际情况考虑是放在dependencies、还是devDependencies + peerDependencies组合。

devDependencies

devDependencies的使用场景:

  1. 仅作为开发时使用,src不会用到,那么就应该放在devDependencies;

  2. devDependencies + peerDependencies组合;

    在开发npm包时,要基于某个包A做开发,或者使用该npm包的项目一定会包含A时,就可以放在devDependencies + peerDependencies

    例如:我们要基于react开发一个npm包,那react就应该放在peerDependencies,而不是dependencies,因为主体项目一定会安装react;同时由于在npm包开发过程中,安装依赖时不会自动安装peerDependencies中的依赖,所以还需要将react添加到devDependencies中作为开发调试使用。

    { "devDependencies": { "react": "^18.2.0" }, "peerDependencies": { "react": ">=16.8" }, }

peerDependencies

peerDependencies 是用来告诉宿主环境哪些包也需要安装,项目才能正常运行。

例如npm包中peerDependencies中的react >= 16.8.0

项目会出现下面几种情况:

  1. 项目中没有安装react,使用npm install安装npm包时会自动安装react
  2. 项目中安装了react且版本符合要求,就以项目中的为准。
  3. 项目中的react版本不符合要求,比如项目中16.0.0,使用npm安装会直接报错;

dependencies 与 peerDependencies 的比较

开发npm包时,依赖到底是放在dependencies还是peerDependencies,可以根据实际情况来定;

  1. 如果不需要使用者关心依赖,或者依赖的版本不能随便变化,那么直接放在dependencies即可;
  2. 在开发npm插件时,比如使用antd做二次开发、react组件库等,其中antdreact都和宿主项目有直接的关系,不应存在多版本,使用peerDependencies规定依赖版本的范围即可,同时在devDependencies中添加开发使用的版本即可。

评论