问题
一个普通的基于antd-mobile库的react项目,采用vite打包。结果开发时的页面样式和生产时的样式不同。第一反应就是vite的非对称式构建方式导致的。
分析
最终发现,在一个页面组件中,用了一个antd的Button组件,
<Button className={style.btn}>xxoo</Button>
这段代码是引入了一个module.scss文件,对当前的Button做样式覆盖操作,由于vite在开发模式下,Module.scss并不会参与文件打包,而是直接以style字符串方式注入到js代码中,因此优先级最高。 但问题就在于,当进行生产打包后,基于每个页面组件会有两个css文件被打包出来并加载,一个是antd的css,一个是自定义的用于覆盖antd样式的css,但神奇的就在于,自定义的被先动态写入到link标签内,antd则在后面,这样,反而antd的样式优先级大于了自定义
虽然问题已找到,但翻遍了整个vite文档也没有找到对应加载顺序的配置项,甚至是能不通过js进行动态加载,而是直接写入到html模板文件中的静态加载方案也没找到,不知道如何解决,求高手指点