我运行从官网下载下来的基于antd的模板代码, 在控制台中发现应用了两份样式. 调试发现, 一份样式是 global.css 引入的样式(被覆盖), 一份可能是 vite 按需加载的.
如果vite按需加载的代码或者其他原因导致的样式覆盖, 我要怎么才能去掉它?
mwkjh3gx1#
补充信息:进一步调试, 打包后的样式正常, 所以是不是在开发模式下, vite 按需加载的插件被开启了.
这个会影响到less变量的覆盖问题.
@import 'antd/dist/antd.less'; @import './var.less'; // @primary-color: #ffa22d;
上面这行代码在开发模式下是无效的, 会被按需加载进来的样式覆盖.但是在项目打包后预览时有效的.
ojsjcaue2#
@worklinwu 提供下 build.json 信息
cgfeq70w3#
{ "vite": true, "plugins": [ [ "build-plugin-ignore-style", { "libraryName": "antd" } ] ] }
我是拿官方的脚手架未作多余修改进行测试的.
2eafrhcq4#
两份内容的原因是默认有全量的 antd 样式引入(global.less)中,而组件中使用的 antd-layout-pro 默认又有自身的样式依赖。对于 less变量的覆盖问题,在 vite 模式 dev 的时候每个脚步 / 样式加载都是独立编译的,因此其他样式加载的时候不包含自定义样式,而在打包的时候走统一编译的时候对引入的所有文件都生效了,推荐通过 https://ice.work/docs/plugin/list/antd#usage 的方式应用主题。后续我们也会关注下这块的最佳实践
4条答案
按热度按时间mwkjh3gx1#
补充信息:
进一步调试, 打包后的样式正常, 所以是不是在开发模式下, vite 按需加载的插件被开启了.
这个会影响到less变量的覆盖问题.
上面这行代码在开发模式下是无效的, 会被按需加载进来的样式覆盖.
但是在项目打包后预览时有效的.
ojsjcaue2#
@worklinwu 提供下 build.json 信息
cgfeq70w3#
@worklinwu 提供下 build.json 信息
我是拿官方的脚手架未作多余修改进行测试的.
2eafrhcq4#
两份内容的原因是默认有全量的 antd 样式引入(global.less)中,而组件中使用的 antd-layout-pro 默认又有自身的样式依赖。
对于 less变量的覆盖问题,在 vite 模式 dev 的时候每个脚步 / 样式加载都是独立编译的,因此其他样式加载的时候不包含自定义样式,而在打包的时候走统一编译的时候对引入的所有文件都生效了,推荐通过 https://ice.work/docs/plugin/list/antd#usage 的方式应用主题。
后续我们也会关注下这块的最佳实践