dependencies、devDependencies和peerDependencies的特点

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中添加开发使用的版本即可。

原文地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值