我对peerDependencies
的理解是让插件使用自身项目装的依赖包,就是说是不是插件与我项目都使用了同样的包就可以放到peerDependencies
里面去。但是我看ant-design-vue
这种也只是写了vue
和@vue/compiler-sfc
:
"peerDependencies": {
"@vue/compiler-sfc": ">=3.1.0",
"vue": ">=3.1.0"
}
所以其他的例如eslint vue-router
这些为什么不放在这个字段里面呢?如果自身项目没写eslint
安装这个库的时候不是也会装eslint
吗?
另外还有一个疑问就是我看网上介绍peerDependencies
的项目都是这种文件形式:
MyProject
|- node_modules
|- PackageA
|- node_modules
|- PackageB
现在初始化一个项目没有看到说packageA
下面还有node_modules
,是因为统一装到自身项目的node_modules
下面了吗?那如果是这样的话写peerDependencies
还有什么意义呢?
有意义。比如说 vue 这个库,你如果不是 peerDependencies 那么会造成一个问题:两份 Vue 代码,并且因为不是同一个实例,导致数据并不共享,比如说有
Vue.use
、Vue.filter
之类的就没有公用。