有A、B两个React项目,B项目属于公共项目,A项目依赖B项目。
它们都依赖antd组件库,但是版本不同。
现在在A中使用B的方式是先build,然后引入:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>app</title>
<link rel="stylesheet" href="path/to/project/B.css" />
<link rel="stylesheet" href="path/to/project/A.css" />
</head>
<body>
<div id='root_a'></div>
<div id='root_b'></div>
<script src="path/to/project/bundleB.js"></script>
<script src="path/to/project/bundleA.js"></script>
</body>
</html>
问题是A.css和B.css中都包含有antd.css,会造成污染。但是因为版本不同,又不能只引一个。
想在B项目antd.css外面套一层Id,类似于#root_b .antd_xxx{}
,但是貌似不起作用:
// b_index.less
#root_b{
@import "~antd/dist/antd.css";
//其他样式
}
求解决方案~
1、你说A项目依赖B项目,B是公共项目,那么就在加载A的时候看看能不能动态使用不同版本的antd引用的版本;
2、根本上来说最好还是分开,要么用同一个版本的仓库
ps:你不管怎么干,即使解决了短暂的问题,都不是长久之计,后面会引来一堆更加复杂的样式问题。所以建议你从长计议,既然是互斥关系,那么就彻底点,A、B分开仓库不依赖,或者合并成一个。