开发npm包时是否需将peer依赖安装为dev依赖?
Peer依赖在包开发阶段的安装方案
核心结论
没错,开发自己的包foo时,你得把peer依赖bar同时添加为dev依赖才能在本地开发、测试中正常使用——因为包管理工具的peer依赖机制本身就是设计让最终宿主项目(比如buzz)来提供这些依赖,不会自动帮你在开发环境安装。
Yarn 具体处理方式
- Yarn v1(经典版):没有专属命令可以跳过重复添加,必须手动执行:
执行后yarn add bar --devbar会同时出现在peerDependencies和devDependencies里。 - Yarn v2+(Berry):可以用一条命令同时添加为peer依赖和dev依赖,避免重复操作:
如果你已经先加了peer依赖,也可以单独补加dev依赖,和v1的命令一致。yarn add bar --peer --dev
npm 具体处理方式
- npm v7+:默认会自动安装peer依赖的兼容版本到项目中,但如果存在版本冲突会抛出错误。不过为了明确控制开发时使用的
bar版本,更稳妥的做法还是手动添加为dev依赖:npm install bar --save-dev - 社区有第三方工具
install-peerdeps可以一键安装package.json中声明的所有peer依赖为dev依赖,适合依赖较多的场景:
(执行前确保你的package.json里已经正确声明了peerDependencies)npx install-peerdeps --dev
通用行业惯例
不管用Yarn还是npm,把peer依赖同时声明为dev依赖都是通用的最佳实践:
- 能确保开发、测试、CI环境中都有可用的依赖版本,避免本地跑不起来的问题;
- 可以明确指定开发时测试的
bar版本,和peerDependencies里的版本范围形成对应,提前验证兼容性。
内容的提问来源于stack exchange,提问作者Khaled
相关产品推荐
相关产品推荐

