Live Sass 编译器 - @use 导致编译错误

Live Sass Compiler - @use causes compilation error

我正在使用 Live Sass Compiler v3.0.0 in my VS Code and it throws a compilation error whenever I use the @use rule 从另一个文件导入变量。但是,当我使用 Sass 命令行界面 (sass --watch) 编译我的文件时,它会抛出 no errors.

因此,我想问一下,这是我代码中的语法错误还是Live Sass编译器的错误造成的。

重现步骤

文件结构和代码

这是我在 VS Code 中打开的名为 sass-test 的文件夹的文件结构:

sass-test
|   style.scss
|   _variables.scss

style.scss

@use "variables";

html {
  color: variables.$primaryColor;
}

_variables.scss

$primaryColor: #ff0000;

实时Sass编译器输出

在 VS Code 的新选项卡中打开 style.scss。然后,点击window右下角的“观看Sass”按钮。 Live Sass 编译器会输出以下错误:

Compiling Sass/Scss Files: 
d:\Web Development\sass-test\style.scss
--------------------
Compilation Error
Error: Invalid CSS after "  color: variables": expected expression (e.g. 1px, bold), was ".$primaryColor;"
        on line 4 of sass/d:\Web Development\sass-test\style.scss
>>   color: variables.$primaryColor;
   ------------------^

--------------------
Watching...
-------------------

Sass CLI 输出

打开终端并运行sass --watch style.scss:style.css。编译器编译成功,没有任何错误:

Compiled style.scss to style.css.

Sass is watching for changes. Press Ctrl-C to stop.

由于我的代码可以使用 Sass CLI 成功编译,这是否意味着我的代码在语法上是正确的并且它是由 Live Sass 编译器扩展中的错误引起的?

两天前我遇到了 same/similar 个问题。

@use 是新正式版'Dart Sass'引入的新指令,取代了现在已被弃用的'@import'

维护者不再支持 VS Code 中流行的扩展 'Live Sass Compiler' 一段时间了。所以不幸的是 Sass 版本没有在该扩展中更新...

在 'Dart Sass' 的 VS Code 中,我找到了扩展 'DartJS Sass Compiler':
https://marketplace.visualstudio.com/items?itemName=codelios.dartsass

实际上我只是做了一个快速测试所以我不能报告太多。不过乍一看是运行嘛。但由于它是另一个扩展,您可能需要更改一些设置。

更新

除了上面报告的带有实际 SASS 版本的扩展 DartJS Sass Compiler 之外,我还发现了 Live Sass Compiler 的实际维护分支。它已经深深地隐藏在搜索结果中。因为它是 VS Code 中非常流行的扩展,所以 link 到分叉:

https://marketplace.visualstudio.com/items?itemName=glenn2223.live-sass

备注:

两个扩展我都玩过。两者都做得很好,各有优势。

'DartJS Sass Compiler' 有更多的可能性输出更详细的信息,比如关于 sass 版本和观察者的信息。除了包含的 SASS 版本之外,如果安装到您的系统或本地到您的项目,它还允许使用您自己的 SASS 版本。因此 no/less 依赖于维护者的更新。

'Live Sass Compiler' 开箱即用,包含 sass 版本。由于它是 VS Code 中非常流行的扩展,因此有一个特殊的优势:它似乎将您的设置保留在旧项目中 运行.

我认为两者都是很好的解决方案。