我致力于选择使用 SASS 的多租户应用程序的样式。遵循最新版本指南,我开始使用@use
和构建基本样式@forward
。现在我想用客户的颜色和字体变量来主题化这个基础,以接收多个样式表,这些样式表可以提供给我们应用程序的不同实例。
如果我要使用 deprecated @import
,我会这样:
styles/customerA/index.scss
@import "customerA-variables";
@import "../base/index";
但是有了新规则,我找不到一种简单的方法来简单地将主题特定变量提供给基本样式。我尝试使用with
关键字,但事实证明我需要在模块中定义变量,而我宁愿将它们封装在另一个模块中并导入它。
styles/customerA/index.scss
@use "customerA-variables" as variables;
@use "../base/index" with (
$bgColor: variables.$bgColor,
$textColor: variables.$textColor
);
styles/base/_base-variables.scss
$bgColor: #eee !default;
$textColor: #333 !default;
styles/base/index.scss
/* HOW IT WORKS */
$bgColor: #eee !default;
$textColor: #333 !default;
/* HOW I WISH IT WORKED */
@use "./base-variables" as *;
/* LATER IN THE FILE */
body {
background-color: $bgColor;
color: $textColor;
}
在@use "../variables" as *
场景中我收到此错误:
Error: This variable was not declared with !default in the @used module.
我正在寻找一个可行的解决方案,最好不要在with
括号内复制粘贴所有主题变量。