Sass-loader没有替换变量?

时间:2018-06-12 16:58:47

标签: css webpack sass sass-loader

不久前,我创建了一个使用SASS变量和CSS自定义属性组合的项目。我定义了我的Sass变量,然后使用它们来创建我的CSS自定义属性。一切都很好。现在我尝试做同样的事情,使用相同的代码和加载器(Webpack)并且它不起作用,我无法弄清楚原因。

我有一个style.scss文件,如下所示:

$var1: #ff3344;
h1 { color: $var1; }
:root { --color1: $var1; }

当我使用sass-loadercss-loaderstyle-loader使用Webpack构建项目时,我得到以下输出:

h1 { color: #ff3344; }
:root { --color1: $var1; }

出于某种原因,$var1替换h1而不替换--color1

看到我之前没有遇到任何问题,我预计sass-loader可能是原因。但是我将sass-loader降级为6.0.7,这与我在该项目中使用的版本相同,但我仍然遇到此问题。当sass-loader被分配到$var1时,为什么不--color1替换<style>

1 个答案:

答案 0 :(得分:1)

  

自定义变量值仅支持#{}内的SassScript。

例如,如果您想要颜色数组:

$blue:    #007bff !default;
$indigo:  #6610f2 !default;
$purple:  #6f42c1 !default;
$pink:    #e83e8c !default;
$red:     #dc3545 !default;
$orange:  #fd7e14 !default;
$yellow:  #ffc107 !default;
$green:   #28a745 !default;
$teal:    #20c997 !default;
$cyan:    #17a2b8 !default;

$colors: () !default;
$colors: map-merge((
  "blue":       $blue,
  "indigo":     $indigo,
  "purple":     $purple,
  "pink":       $pink,
  "red":        $red,
  "orange":     $orange,
  "yellow":     $yellow,
  "green":      $green,
  "teal":       $teal,
  "cyan":       $cyan,
  "white":      $white,
), $colors);

@each $color, $value in $colors {
    --#{$color}: #{$value};
}