@forward
ルールは対象ファイルに書かれてる内容を現在のファイルAにすべて取り込みます。つまり現在のファイルAを@use
して使う場合@forward
してきたファイルの内容も使えることになります。
JavaScript エンジニアな人なら`export * from '...';のようなものだと考えると分かりやすいかもしれません。
使い方は単に@mixin
などをまとめて定義したファイルのパスに対して@forward
するだけです。
@forward "mixins/button";
@forward "mixins/link";
別名
mixins/_button.scss
の中身がこんな感じだとします。
@mixin text {
color: orange;
}
もし、text
という名前の Mixin がmixins/link
でも定義されていて被るのを避けたい時、as
と続けて別名を定義することで回避できます。
@forward "mixins/button" as button-*;
@forward "mixins/link" as link-*;
これでmixins/button
のtext
はbutton-text
、mixins/link
ではlink-text
という名前で取り込まれます。
カスタマイズして取り込み
@use
のように内部で定義した!default
を付けた変数を取り込み時に上書きできます。
@forward "mixins/button" with ($color: orange);
また違いとしてこちらはwith
の中でも!default
が使えます。これにより上位モジュールから更に変更可能になります。
@forward "mixins/button" with ($color: orange !default);
一部だけ取り込み
show
とhide
を続けると取り込む要素を絞り込めます。show
は指定した要素だけ、hide
は指定した要素以外という意味の違いがあります。
@forward "mixins/button" show $new-color, new-text;
@forward "mixins/button" hide $old-color, old-text;