使用環境
Name | Version |
---|---|
Dart Sass | 1.70.0 |
UIkit | 3.17.11 |
前書き
前回と、前々回で、UIkit
を@use
や@forward
に置き換えられるか試しました。
一つだけ気になったことがあります。
カスタムテーマの位置が、フレームワーク内にあることが前提になれば、さすがにマズイよね?と思いました。
ファイルやディレクトリの位置は、検証する時だけの位置であり、本番環境で使われることを想定していません。
察しが良い人だと気づいたと思いますが、これは簡単に解決できます。
本題
フレームワーク側が、@use
や@forward
に置き換わったと仮定した場合の説明です。*1
Sass
には、--load-path
というオプションがあります。
私の場合は、--load-path=./node_modules
として使うことが多いです。
--load-path
というオプションは、複数設定できるので、カスタムテーマがある位置を指定すればいいのです。
例えば、Laravelで使う場合だと、--load-path=./resources/scss
という感じになると思います。
load-path | 説明 |
---|---|
node_modules | UIkit |
resources/scss | カスタムテーマ用 |
前回で、相対パスで記述した部分を変更します。
theme/variables.scss
@forward 'uikit/src/scss/variables.scss' with ( $global-color: #999 // オリジナルは、#666 );
uikit/components/alert.scss
@use 'theme/variables.scss' as *; .uk-accordion-title:hover { color: $accordion-title-hover-color; }
theme/variables.scss
は、resources/scss/theme/variables.scss
を指すよう、設定します。
sass --load-path=./node_modules --load-path=./resources/scss --style expanded resources/scss/main.scss:public/assets/css/main.css
resources/scss/main.scss
の中身。
@use 'uikit/src/scss/components';
余談
UIkit
のtheme
を使いたい時は、下記のように変更すれば良いはずです。*2
sass --load-path=./node_modules/uikit/src/scss --style expanded resources/scss/main.scss:public/assets/css/main.css
resources/scss/main.scss
の中身。
@use 'components';
後書き
Less
から、@use
や@forward
を使用したSCSS
に変換するプログラムを作成しながら、検証しています。
コンポーネントの数が多いので、全てのコンポーネントを変換した上で検証したわけではないのですが、おそらく問題ないはずです。
追記(2024-02-16)
Dart Sass
のv1.71.0
から--pkg-importer
が使えるようになりました。
CHANGELOG
に、sass --pkg-importer=node
と@use "pkg:bootstrap"
を記述すればいいと、書いてあります。
Bootstrap 5.3.2
で、実際に試したら、ちゃんとコンパイルされていました。