Jekyll Sass Converter 2.2.0からsassc(libsass)を外せるけど注意が必要

sass-embedded-host-rubyが使えるようになる

2022 年 2 月末にリリースされた Jekyll Sass Converter 2.2.0 だが

Release v2.2.0 · jekyll/jekyll-sass-converter

を読むと

ntkme/sass-embedded-host-ruby: A Ruby library that will communicate with Embedded Dart Sass using the Embedded Sass protocol

を利用できるようになったと書いてある。使い方は

Gemfile

gem 'sass-embedded'

を加えて

_config.yml

sass:
  implementation: sass-embedded

と書くと利用できるようになる。

npmからSassライブラリを読み込むには注意が必要

例えば bootstrap を利用する場合、これまではいきなり Scss の中で

@import "./node_modules/bootstrap/scss/bootstrap";

とすれば利用できていたのだが、今後はまず config で load_paths

sass:
  load_paths:
    - node_modules/

以上のように設定したうえで

@import "bootstrap/scss/bootstrap";

とする必要がある。

今後 - libsass EOL問題への対応が進むかも? -

今回 Jekyll Sass Converter 2.2.0 によって sassc の依存している libsass の EOL 問題はとりあえず処理系については解決かな?

libsass の EOL 問題についてはこの辺。

One year after both Dart Sass and LibSass have launched support for the module system or two years after Dart Sass launches support for the module system, whichever comes sooner (1 October 2021 at latest), we will deprecate @import as well as global core library function calls that could be made through modules.

One year after this deprecation goes into effect (1 October 2022 at latest), we will drop support for @import and most global functions entirely. This will involve a major version release for all implementations.

少なくとも 2022年10月1日より従来の @import の機能を drop するから @use にしろという話になっている。実際の CSS のコードをそれまでに全部書き換えるのはたぶん無理だと思うけど、少なくとも

ntkme/sassc-embedded-shim-ruby: A Ruby shim for SassC that will communicate with Embedded Dart Sass using the Embedded Sass protocol

があるので、他の sassc gem 依存の各種ライブラリももしかしたら sass-embedded ベースにスイッチしていくかもしれない。そうなると libsass の EOL 問題は大きく処理系をスイッチすることなく解決ですね。

正直 Sass 系統を node-sass に移行していたんなら libsass EOL 問題への対応は簡単だと思う(embedded host の実装が進む前から dart sass が使えていた)んだけど、とは言えすべての環境において node で処理するのが正解かというとそうではないので、sass-embedded-host-ruby の存在は本当にありがたいです。

More