From 7e2019b1aa93ba3c9598da0f3f10fe445e2ba38a Mon Sep 17 00:00:00 2001 From: Ryuuji Yoshimoto Date: Wed, 5 Aug 2026 12:28:13 +0900 Subject: [PATCH] =?UTF-8?q?refactor(style):=20=E9=9D=9E=E6=8E=A8=E5=A5=A8?= =?UTF-8?q?=E3=81=AE=20Sass=20@import=20=E3=82=92=20@use=20=E3=81=B8?= =?UTF-8?q?=E7=BD=AE=E3=81=8D=E6=8F=9B=E3=81=88=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dart Sass 3.0 で @import は削除される。unitrad 系は _default.sass の変数を サイト側の config.sass が上書きする形で、@import のグローバルスコープに 依存していた。 @use では他のモジュールの変数を default.$name: value の形で書き換える。 app.sass が default -> config -> main... の順に @use するので、config での 上書きは main 以降の評価に反映される。 rem() は _main.sass にあり _top / _side / _result / _bottom から使われていた。 @use では読み込んだ側からしか見えないので、CSS を出さない _functions.sass に 分けて使う側から @use した。あわせて ceil() を math.ceil() にした (Dart Sass 3.0 で削除されるため。17個の値で旧実装と一致することを確認済み)。 conf/ の1サイトでコンパイルした CSS は移行前と SHA256 まで一致。 DEPRECATION WARNING も0件になった。 Co-Authored-By: Claude Opus 5 (1M context) --- conf/config.sass | 7 ++++++- src/sass/_bottom.sass | 2 ++ src/sass/_functions.sass | 18 ++++++++++++++++++ src/sass/_main.sass | 10 ++-------- src/sass/_result.sass | 1 + src/sass/_side.sass | 1 + src/sass/_top.sass | 2 ++ src/sass/app.sass | 18 +++++++++--------- 8 files changed, 41 insertions(+), 18 deletions(-) create mode 100644 src/sass/_functions.sass diff --git a/conf/config.sass b/conf/config.sass index 6a3db8d..5549004 100644 --- a/conf/config.sass +++ b/conf/config.sass @@ -1,3 +1,8 @@ // テーマCSSのカスタマイズ (SASS形式) +// +// _default.sass の値を上書きする。@use では他のモジュールの変数を +// default.$name: value の形で書き換える。app.sass が default -> config -> main... の +// 順に @use しているので、上書きは main 以降の評価に反映される。 +@use 'default' -$themeColor: #689B8C +default.$themeColor: #689B8C diff --git a/src/sass/_bottom.sass b/src/sass/_bottom.sass index 894ae04..c367b3c 100644 --- a/src/sass/_bottom.sass +++ b/src/sass/_bottom.sass @@ -1,4 +1,6 @@ @charset "utf-8" +@use 'default' as * +@use 'functions' as * /* ページネーション diff --git a/src/sass/_functions.sass b/src/sass/_functions.sass new file mode 100644 index 0000000..05358a0 --- /dev/null +++ b/src/sass/_functions.sass @@ -0,0 +1,18 @@ +@charset "utf-8" +@use "sass:math" +@use 'default' as * + +// _main.sass にあった rem()。 +// @import なら暗黙で全体から見えていたが、@use では読み込んだ側からしか見えない。 +// _main / _top / _side / _result / _bottom から使うのでここへ分けた。 +// CSS を出さないモジュールなので、@use する位置は出力順に影響しない。 +// +// $standard-rem は呼び出し時に評価されるため、conf 側の config.sass が +// 上書きした値がそのまま効く。 + +// CSSフレームワークに対応するために演算済みのremを出力する +@function rem($value) + @if $standard-rem == false + @return $value * 1rem + @else + @return math.div(math.ceil($value * 0.625 * 100), 100) * 1rem diff --git a/src/sass/_main.sass b/src/sass/_main.sass index 4f3ddab..5fc1b8e 100644 --- a/src/sass/_main.sass +++ b/src/sass/_main.sass @@ -1,12 +1,6 @@ @charset "utf-8" -@use "sass:math" - -// CSSフレームワークに対応するために演算済みのremを出力する -@function rem($value) - @if $standard-rem == false - @return $value * 1rem - @else - @return math.div(ceil($value * 0.625 * 100) , 100) * 1rem +@use 'default' as * +@use 'functions' as * * box-sizing: border-box diff --git a/src/sass/_result.sass b/src/sass/_result.sass index eb9d7e6..97bff76 100644 --- a/src/sass/_result.sass +++ b/src/sass/_result.sass @@ -1,4 +1,5 @@ @charset "utf-8" +@use 'functions' as * /* 検索結果 .emresults diff --git a/src/sass/_side.sass b/src/sass/_side.sass index 4768bfa..b6beb23 100644 --- a/src/sass/_side.sass +++ b/src/sass/_side.sass @@ -1,4 +1,5 @@ @charset "utf-8" +@use 'functions' as * /* サイドバー .emside diff --git a/src/sass/_top.sass b/src/sass/_top.sass index 566b3b6..a63bc8a 100644 --- a/src/sass/_top.sass +++ b/src/sass/_top.sass @@ -1,4 +1,6 @@ @charset "utf-8" +@use 'default' as * +@use 'functions' as * @use "sass:math" /* トップ(検索ボックス)*/ diff --git a/src/sass/app.sass b/src/sass/app.sass index ad3c3b8..488d0bb 100644 --- a/src/sass/app.sass +++ b/src/sass/app.sass @@ -1,14 +1,14 @@ @charset "utf-8" -@import 'forced-color' -@import 'default' +@use 'forced-color' +@use 'default' -@import 'config' +@use 'config' -@import 'main' -@import 'top' -@import 'side' -@import 'result' -@import 'bottom' +@use 'main' +@use 'top' +@use 'side' +@use 'result' +@use 'bottom' -@import 'index' +@use 'index'