@
lyxxxh2 我实现了!!! 我太激动了
packages/components/theme/var.scss
$hl-color-primary: #ffe240 !default; // 保持纯 Sass 变量
packages/components/theme/variables.scss
@
use './var' as *;
// 正确写法:直接使用 Sass 变量,并在根部导出 CSS 变量
// 这个文件用于生成最终的主题 :root{}
:root {
--hl-color-primary: #{$hl-color-primary}; // 将 Sass 变量值同步到 CSS 变量
}
然后组件库的 scss 使用 变量$hl-color-primary
packages/components/theme/hl-base-button.scss
@
use "./var.scss" as *;
.my-button {
padding: 8px 16px;
border: none;
border-radius: 4px;
cursor: pointer;
&--default {
background-color: #f0f0f0;
}
&--primary {
background-color: $hl-color-primary;
color: white;
}
&--success {
background-color: #67c23a;
color: white;
}
&--warning {
background-color: #e6a23c;
color: white;
}
&--danger {
background-color: #f56c6c;
color: white;
}
}
组件库主题就设置好了
用户使用主题时,默认使用的是组件库的主题,也可以替换组件库主题
用户替换主题代码
play/src/styles/hl/index.scss
@
use 'hl-fe-component/theme/var.scss' with (
$hl-color-primary: pink
);
vite.confit.ts
css: {
preprocessorOptions: {
scss: {
additionalData: `@use "~/styles/hl/index.scss" as vars;`,
},
},
},
然后 大工告成