Dart Sass で DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0. の警告が表示される

現象

最近 Dart Sass で Scss をトランスパイルすると、

DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

という警告が表示されるようになりました。

より詳細には以下のような感じです。

DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div($spacer, 2)

More info and automated migrator: https://sass-lang.com/d/slash-div

    ╷
308 │ $headings-margin-bottom:      $spacer / 2 !default;
    │                               ^^^^^^^^^^^
    ╵
    node_modules\bootstrap-honoka\scss\honoka\_variables.scss 308:31  @import
    src\scss\global\honoka\_honokaImport.scss 7:9                     @forward
    src\scss\global\_framework.scss 3:1                               @use
    src\scss\foundation\_override.scss 4:1                            @use
    src\scss\foundation\_index.scss 3:1                               @use
    src\scss\contents.scss 8:1                                        root stylesheet

調査

調べると、 Dart Sass では徐算に / を使った記述 (上述の例では $spacer / 2 ) は非推奨となり、代わりに math.div($spacer, 2) というように、ビルトインモジュールの math を使うように求められるようです。

なお、将来的には非推奨ではなく使用不可にしていく模様。

さて、問題はこの警告、大半が Bootstrap の中で発生しているということ。

自分で書いたコードのみならば修正していくのも吝かではないですが、 Bootstrap 本体となるとあまり手は入れたくないし、量も大量にあると想定されるので面倒なことになりそうです。

回避

上述より、根本的対処ではなく Dart Sass のパッケージ指定を固定するという一時的な回避策で逃げたいと思います。

    // 略
    "devDependencies": {
        // 略
        "sass": "1.32.12",
        // 略
    },
    "resolutions": {
        // 略
        "sass": "1.32.12"
    },
    // 略

これでひとまず警告は出なくなりました。

後は Bootstrap 等が対応してくれることを祈る感じですかね……。

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。