8年前のSCSSが突然エラーに?VS CodeでSassコンパイルエラーが出るようになった理由

約8年前に制作したサイトの修正依頼がありました。昨年の6月頃に修正した際には何ともなかったのですが、SCSSで突然エラーや警告が出るようになりました。特に@importについてはめちゃくちゃ手こずったのでその備忘録的なお話です。

  • 8年前に構築したSCSS
  • 昨年まではコンパイルエラーなし
  • 今年からVS Codeで警告やエラーが発生
  • 特に @import や複雑なセレクタ部分で表示

「コードは変えていないのに、なぜ?」
その原因は Sass本体の仕様変更 にあります。

目次

Dart Sassへの完全移行と@importの完全非推奨化

原因は主にこの2つです。

  1. Dart Sassへの完全移行
  2. @import の正式非推奨化(Deprecation)

8年前のSCSSは「Ruby Sass」や「node-sass」時代の書き方です。
現在のSassは内部仕様が大きく変わっています。

Sassの歴史と転換点

Sassは大きく3つの時代があります。

時代状態
Ruby Sass2019年終了
node-sass2020年以降停止
Dart Sass現在の公式実装

2020年以降、Dart Sassが唯一の公式実装になりました。

@import が非推奨になったのはいつ?

2020年10月

Sass公式が @import を非推奨(Deprecation)と発表。

2023年以降

警告が強化される。

2024〜2025年

VS Code拡張やビルドツールが
Dart Sass最新バージョンを使うようになり、警告が明確化。

つまり、

昨年までは古いSassが動いていた可能性が高い

ということです。

なぜ昨年まではエラーが出なかったのか?

可能性はこの3つ。

✔ node-sassを使用していた

→ 旧仕様に寛容

✔ 古いDart Sassバージョン

→ DeprecationがWarning扱いだった

✔ VS Codeの拡張が古かった

→ Linterが弱かった

今年になって:

  • Sass拡張のアップデート
  • Dart Sassの自動更新
  • VS Codeの内部CSSエンジン更新

が重なり、
非推奨が明確にエラー扱いになったと考えられます。

ずっと使っていたわけではなかったので、急に古いSCSSを修正することになった場合、想定以上に修正コストがかかる恐れがあることをご理解ください。

実際に出るエラー例

❌ @import 使用時

@import "variables";
@import "mixin";

→ 現在は推奨されない

❌ グローバル変数の再定義

Dart Sassはスコープ管理が厳格です。

❌ 複雑なセレクタ構造

8年前は問題なかった書き方でも、現在はLinterが警告を出します。

正しい現在の書き方

✔ @use を使う

@use "variables";
@use "mixin";

名前空間付きになります。

@forward を使う

モジュール集約には:

@forward "variables";
@forward "mixin";

なぜSassは@importをやめたのか?

理由は:

  • グローバル汚染
  • 依存関係が不明瞭
  • ビルド速度の問題
  • 重複読み込み問題

モジュール方式にすることで、

✔ スコープが明確
✔ 再利用しやすい
✔ ビルドが高速

になります。

8年前のSCSSは危険なのか?

結論:

❌ 今すぐ動かなくなるわけではない
⚠ しかし将来的に完全削除される可能性あり

Sass公式は「将来的に@importは削除する」と明言しています。

今どうすべきか?

選択肢は3つ。

① 警告を無視する(短期対応)

小規模修正のみなら可。


② Sassバージョンを固定する

package.jsonで指定:

"sass": "1.62.0"

③ モジュール化へ移行(推奨)

  • @use へ書き換え
  • 変数を整理
  • mixinを再構成

まとめ

今回エラーが出た理由は、

  • コードが壊れたからではない
  • WordPressが原因でもない
  • SCSS設計ミスでもない

Sassの進化が原因です。

8年前のSCSSは当時は正解だった設計。

しかし現在は:

  • Dart Sass標準
  • @import非推奨
  • Linter強化

という環境に変わっています。

結論

8年前に正しかったSCSSは、今でも間違いではありません。

しかし、

  • Sassはモジュール化へ移行済み
  • @importは非推奨
  • Linterは年々厳格化

という流れの中で、「古い設計」が浮き彫りになっただけです。

長期運用するテーマやプロジェクトは、一度モジュール設計への見直しを検討するタイミングに来ています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

豊中市でWEB系のフリーランスをしています。
ホームページの制作や管理・運営、ECのコンサルティングを行っています。
【ool WEB Desing】
https://ool.design/

目次