本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/05/29/%E4%BB%80%E4%B9%88%E6%98%AFpeerDependencies/
摘要
本文主要讲述了:
- 背景
- 示例
正文
背景
考虑这样一种场景:
- 开发者针对
example@2.0.0
开发了一个名为example-plugin-a@1.0.0
的插件 example-plugin-a@1.0.0
不需要引用example@2.0.0
,两者不存在显式的依赖关系。但从逻辑上讲,example@2.0.0
是example-plugin-a@1.0.0
的宿主example-plugin-a@1.0.0
不兼容example@1.0.0
为了避免用户在example@1.0.0
的环境上安装example-plugin-a@1.0.0
,显然此时开发者需要声明example-plugin-a@1.0.0
和example@2.0.0
的宿主关系。
于是peerDependencies
应运而生。
peer 的中文意思为同辈的、同龄的。peerDependencies
可以理解为同伴依赖,它表示包和包之间的宿主关系。
示例
grunt-babel
是grunt
的插件。
grunt-babel
的peerDependencies
为:
1 | { |
我们可以新建一个项目来体验一下peerDependencies
的作用,就像下文这样:
1 |
|
依赖安装完成之后,npm 会发出同伴依赖缺失的警告:
1 | npm WARN grunt-babel@8.0.0 requires a peer of @babel/core@^7.0.0 but none is installed. You must install peer dependencies yourself. |
参考资料
本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/05/29/%E4%BB%80%E4%B9%88%E6%98%AFpeerDependencies/
本文对你有帮助?请支持我
- 本文链接: https://jsweibo.github.io/2019/05/29/%E4%BB%80%E4%B9%88%E6%98%AFpeerDependencies/
- 版权声明: 除非另有说明,否则本网站上的内容根据署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。