破壊的変更: meta.feature-exists()

meta.feature-exists() 関数は長い間、新機能が追加されておらず、現在は非推奨となっています。ユーザーは、新しい機能が利用可能かどうかを判断するために他の方法を使用する必要があります。

歴史的に、Sassは meta.feature-exists() 関数 (グローバルな feature-exists() 関数としても利用可能) を使用して、スタイルシートのコンパイル時にさまざまな新しい言語機能が利用可能かどうかを検出できるようにしていました。しかし、時間が経つにつれて、ほとんどの新しいSass機能は、より簡単な方法で検出できるか、またはまったく検出するのにあまり役に立たないことが判明しました。

この関数は現在非推奨であり、Dart Sass 2.0.0で削除されます。Dart Sassが現在、公式にサポートされている唯一のSass実装であり、Dart Sassのすべてのバージョンが meta.feature-exists() でサポートされているすべての機能をサポートしているため、既存のすべての使用箇所は安全に削除できます。

多くの新機能は、meta.function-exists()meta.mixin-exists()、または [meta.global-variable-exists()] を使用して検出できます。その他は、calc(1) == 1 を使用して、Sassの現在のバージョンがファーストクラスの計算をサポートしているかどうかを判断するなど、式レベルの構文を使用して検出できます。

移行期間移行期間パーマリンク

互換性
Dart Sass
1.78.0以降
LibSass
Ruby Sass

まず、feature-exists のすべての使用箇所に対して非推奨警告を発行します。

Dart Sass 2.0.0では、meta.feature-exists() は存在しなくなります。それを呼び出そうとするとエラーがスローされ、グローバルな feature-exists() 関数を呼び出そうとすると、プレーンなCSS関数 呼び出しとして扱われます。

警告を抑制できますか?警告を抑制できますか? パーマリンク

Sassは、どの非推奨警告をいつ表示するかを管理するための強力なオプションスイートを提供しています。

簡潔モードと詳細モード簡潔モードと詳細モード パーマリンク

デフォルトでは、Sassは簡潔モードで実行され、追加の警告を抑制する前に、各タイプの非推奨警告を5回だけ表示します。これにより、ユーザーがコンソールに圧倒的な量のノイズを作成することなく、今後の破壊的変更を認識する必要があるかどうかを確実に知ることができます。

代わりにSassを詳細モードで実行すると、遭遇するすべての非推奨警告が表示されます。これは、非推奨を修正する際に、残りの作業を追跡するのに役立ちます。コマンドラインで--verbose フラグを使用するか、JavaScript APIverbose オプションを使用して、詳細モードを有効にできます。

⚠️ 注意!

JS APIから実行する場合、Sassはコンパイル間で情報を共有しないため、デフォルトでは、コンパイルされる各スタイルシートに対して5つの警告が表示されます。ただし、これは、コンパイルごとに5つのエラーのみを表示し、複数の コンパイル間で共有できる、カスタムLoggerを作成する(またはお気に入りのフレームワークのSassプラグインの作成者に依頼する)ことで修正できます。

依存関係の非推奨を抑制する依存関係の非推奨を抑制する パーマリンク

場合によっては、依存関係に、どうすることもできない非推奨警告が含まれていることがあります。コマンドラインで--quiet-deps フラグを使用するか、JavaScript APIquietDeps オプションを使用することにより、アプリの警告は引き続き表示しながら、依存関係からの非推奨警告を抑制できます。

このフラグの目的上、「依存関係」とは、エントリポイントのスタイルシートからの相対的な読み込みの連続ではないスタイルシートのことです。これは、ロードパスから来るもの、およびほとんどのカスタム インポーターを介してロードされるスタイルシートを意味します。

特定の非推奨を抑制する特定の非推奨を抑制する パーマリンク

特定の非推奨が問題にならないことがわかっている場合は、コマンドラインで--silence-deprecation フラグを使用するか、JavaScript APIsilenceDeprecations オプションを使用して、その特定の非推奨に関する警告を抑制できます。