当使用 @use 导入文件时: Error Undefined Mixin

KSP*_*SPR 9 sass

我有一个入口文件:

@use '_mixins';
@use '_default';
Run Code Online (Sandbox Code Playgroud)

现在,当我在其中使用 mixin 时,default.scss会抛出错误:

Dart Sass 失败并出现以下错误:错误:未定义的 mixin。

由于@use受到鼓励,我不明白为什么这不起作用。如果我@import像以前那样写,效果会很好:

@import '_mixins';
@import '_default';
Run Code Online (Sandbox Code Playgroud)

这样一切都美好而花花公子。

我怎样才能使用@use并仍然拥有一切可用的东西?

Bre*_*ber 12

这可能是因为新规则的使用@use会对您构建项目结构的方式产生很大影响。使用 会@use极大地改变它:

  1. @import添加文件后,mixins/vars/modules 就可以在稍后加载的每个 sass 文件中使用。

  2. 您必须@use直接在要使用它的文件中加载您需要的特殊 sass 文件(即“_mixins”)...而不是主文件。(是的:将 mixins/functions/variables-files 加载到您想要使用它们的每个部分文件中是编写 sass 的新预期方法。

  3. 还有一点关于您的使用@use:如果您加载,则@use 'mixins必须在单独的名称空间中调用文件中的 mixin @include mixins.yourMixinYouCall。如果你想加载 mixin 而不需要单独的命名空间,你可以这样做@use 'mixins' as *

更改为单独的命名空间有一些优点。但事实上,这是一个非常大的影响,也是一个关于构建 sass 文件的新方法的非常难讨论的主题。

我们这周有这个,在发布两次之前你可以看看这个帖子:

Sass 的 @use 功能