我正在将代码库从使用迁移@import
到@use
和@forward
。大部分都可以,但我不确定在@import
使用 with的情况下该怎么做@content
。
考虑到以下混合,唯一的目标是将样式包装在一个类中:
@mixin alternative-styles {
.parent-class {
@content;
}
}
然后使用 mixin@import
将所有这些样式包装在 a 中.parent-class
:
@include alternative-styles {
@import 'components';
}
我认为用 a 替换它是@forward
行不通的,但无论如何都要尝试一下:
@include alternative-styles {
@forward 'components';
}
这引发了以下错误:
Error: This at-rule is not allowed here.
╷
22 │ @forward 'components';
│ ^^^^^^^^^^^^^^^^^^^^^
╵
我发现该sass-migration
工具以这种方式解决了这个问题:
@use 'sass:meta';
@use 'mixins';
@include mixins.alternative-styles {
@include meta.load-css('components');
}
这些components.scss
文件有多个@forward
语句将所有组件引用保存在一个地方,如下所示:
// components.scss
@forward 'components/buttons';
@forward 'components/text';
sass 编译器运行后会产生一个空块:
.parent-class {
}
有什么方法可以实现将一堆样式包装在一个支持@use
and@forward
规则的类中?