如何判断依赖应放入dependencies、devDependencies还是peerDependencies
dependencies与peerDependencies的区分方法
只有当你开发需要对外发布的npm包时,才需要区分这两类依赖,普通业务项目通常只需要用到dependencies和devDependencies即可。
核心差异
- dependencies:属于你的包内部自用的运行时依赖,用户安装你的包时,npm会自动将这些依赖安装到你包的私有node_modules目录下,和宿主项目的其他依赖互不干扰。
举个例子:你开发的工具包内部用到了dayjs处理时间,不需要宿主项目也安装dayjs,那dayjs就应该放到dependencies里。 - peerDependencies:属于你的包要求宿主环境必须预装的依赖,npm不会自动帮用户安装这类依赖,仅会在宿主环境的依赖版本不符合要求时抛出版本不兼容警告。
举个常见场景:你开发了一个Vue3的组件库,你的组件必须运行在Vue3的环境下,而且需要和宿主项目用同一个Vue实例,那你就应该把vue放到peerDependencies里,声明要求宿主项目安装符合版本要求的Vue。
快速判断准则
当你不确定一个依赖放哪个分类时,可以问自己一个问题:用户用我的包的时候,是不是必须要自己主动安装这个依赖才能正常运行?
- 回答是:放peerDependencies
- 回答否:放dependencies
常用安装命令
- 安装依赖到dependencies:
npm install <包名> --save - 安装依赖到peerDependencies(npm 7及以上版本支持):
npm install <包名> --save-peer
内容的提问来源于stack exchange,提问作者Wayne Mao
相关产品推荐
相关产品推荐

