Sass 从scss函数更新全局变量

Sass 从scss函数更新全局变量,sass,Sass,我有一个scss函数 @函数变暗($color,$percent){ ... @返回$computed color; } 此函数覆盖darken()函数,但添加了一些额外的功能。 现在,我想知道是否有可能以某种方式将对该函数的所有调用存储在某个映射中,然后在所有函数调用完成后,通过mixin运行该映射,例如: $calc颜色:()!全球的; $calc colors:map merge(('thisvaluewillbeexported':1),$calc colors); @功能测试($co

我有一个scss函数

@函数变暗($color,$percent){
...
@返回$computed color;
}
此函数覆盖darken()函数,但添加了一些额外的功能。 现在,我想知道是否有可能以某种方式将对该函数的所有调用存储在某个映射中,然后在所有函数调用完成后,通过mixin运行该映射,例如:

$calc颜色:()!全球的;
$calc colors:map merge(('thisvaluewillbeexported':1),$calc colors);
@功能测试($color,$percent){
$col:darken($color,$percent);
//$calc colors:append($calc colors,'-'$color);--不工作
//$calc colors:map merge(('--'+$color:$col),$calc colors);--不工作
@返回$col;
}
.测试{
颜色:试验(粉红色,24%);
}
.test2{
颜色:试验(红色,24%);
}
:出口{
@每个$bp,$calc颜色中的$value{
#{$bp}:#{$value};
}
}
//仅提供此值将被导出:1
我的目标是以某种方式将对测试函数的所有调用记录到:export{}属性中,以便能够从javascript获取值

//我的首选输出是:
{
“thisvaluewillbeexported”:1,
“--粉红色”:“ff4666”,
“--红色”:“85万”

}
您应该设置变量
!全局
内部功能。
萨斯密斯特。
关于Sass中的变量范围

@function set-color($color-name, $darken-ration) {
  $darken-color: darken($color-name, $darken-ration);

  $calc-colors: map-merge($calc-colors, ('--' + $color-name: $darken-color)) !global;

  @return $darken-color;
}

$calc-colors: map-merge(('thisvaluewillbeexported': 1), ());

a {
  color: set-color(green, 10%);
}

b {
  color: set-color(red, 10%);
}

c {
    @each $name, $value in $calc-colors {
    #{$name}: #{$value};
  }
}
Css输出:

a {
  color: #004d00;
}

b {
  color: #cc0000;
}

c {
  thisvaluewillbeexported: 1;
  --green: #004d00;
  --red: #cc0000;
}