css污染问题

有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";
    
    //其他样式
}

求解决方案~

阅读 2.9k
1 个回答

1、你说A项目依赖B项目,B是公共项目,那么就在加载A的时候看看能不能动态使用不同版本的antd引用的版本;
2、根本上来说最好还是分开,要么用同一个版本的仓库

ps:你不管怎么干,即使解决了短暂的问题,都不是长久之计,后面会引来一堆更加复杂的样式问题。所以建议你从长计议,既然是互斥关系,那么就彻底点,A、B分开仓库不依赖,或者合并成一个。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题