仓库源码:https://github.com/rayhomie/antdVersionTest
我们以antd作为例子,想在一个项目中同时使用antd3和antd4:(如果要单独使用一个版本的包的话,需要把包单独拿出来)
此时我们npm i
安装下依赖,在页面中同时使用antd3和antd4的Form组件进行测试
引入样式到全局:
我们看下效果,发现两个版本的Form组件都可以正常使用,但是样式会冲突:
下面是ant3和ant4样式冲突导致的效果:
我们来看看这两个版本包的内部依赖差异对比,可以看到很多都是依赖包都是相同的,但是存在版本号不一致的情况:
我们来看下使用npm install来安装依赖的效果,如果依赖的包版本号一致,则会将依赖包下载到node_modules
下实现共用;如果发现引用的依赖包版本号不一致,则会将存在版本冲突的依赖包单独下载到node_modules/module/node_modules
。
yarn安装依赖原理和npm不一样,来看下yarn安装的结果: