インポーター<sync>

@use 規則および@import 規則のカスタムSassロードロジックを実装するオブジェクトです。 importersまたはimporterに渡すことができます。

ディスク上のファイルにリダイレクトするだけのインポーターは、代わりにFileImporterインターフェイスを使用することをお勧めします。

ロードの解決

これは、カスタムインポーターを使用してロードを解決するプロセスです

  • コンパイラーは @use "db:foo/bar/baz" を検出します。
  • "db:foo/bar/baz"を指定してcanonicalizeを呼び出します。
  • canonicalizenew URL("db:foo/bar/baz/_index.scss")を返します。
  • コンパイラーがこの正規URLでスタイルシートをすでにロードしている場合、既存のモジュールを再利用します。
  • そうでない場合は、new URL("db:foo/bar/baz/_index.scss")を指定してloadを呼び出します。
  • loadは、コンパイラーがモジュールの内容として使用するImporterResultを返します。

複数のインポーターとロードパスを使用してロードが解決される方法の詳細については、importersを参照してください。

sass.compile('style.scss', {
// An importer for URLs like `bgcolor:orange` that generates a
// stylesheet with the given background color.
importers: [{
canonicalize(url) {
if (!url.startsWith('bgcolor:')) return null;
return new URL(url);
},
load(canonicalUrl) {
return {
contents: `body {background-color: ${canonicalUrl.pathname}}`,
syntax: 'scss'
};
}
}]
});

型パラメーター

階層

  • インポーター

プロパティ

メソッド

プロパティ

非正規スキーム?: string | string[]

このインポーターがcanonicalizeによって返されるURLに絶対に使用しないことを約束するURLスキームまたはスキームのセット(:なし)。これらのスキームの1つでURLを返した場合、エラーになります。

これが設定されている場合、非正規スキームを持つURLのcanonicalizeへの呼び出しは、containingUrlが既知の場合は渡されます。

これらのスキームには、小文字のASCII文字、ASCII数字、+-、および.のみを含めることができます。空にすることはできません。

メソッド

  • urlがこのインポーターによって認識される場合は、その正規形式を返します。

    Sassが返された正規URLでスタイルシートをすでにロードしている場合、既存の解析ツリー(および@useのロードされたモジュール)を再利用します。これは、インポーターが、異なるインポーター間でも、同じ正規URLが常に同じスタイルシートを参照することを保証する必要があることを意味します。そのため、インポーターは、相互に区別するために、一意のURLスキームを使用することが推奨されます。

    可能な限り、カスタムインポーターは、組み込みのファイルシステムインポーターと同じ方法でURLを正規化する必要があります。

    • インポーターは、URLのベース名にプレフィックス_を追加し、URLにすでにこれらの拡張子の1つがない場合は、拡張子.sass.scssを追加して、スタイルシートを検索する必要があります。たとえば、URLがfoo/bar/bazの場合、インポーターは次を探します。

      • foo/bar/baz.sass
      • foo/bar/baz.scss
      • foo/bar/_baz.sass
      • foo/bar/_baz.scss

      URLがfoo/bar/baz.scssの場合、インポーターは次を探します。

      • foo/bar/baz.scss
      • foo/bar/_baz.scss

      インポーターがこれらのURLの複数でスタイルシートを見つけた場合、そのURLがあいまいであることを示す例外をスローする必要があります。拡張子が明示的に指定されている場合、反対の拡張子を持つスタイルシートが存在することが許可されることに注意してください。

    • 可能なパスのいずれも有効でない場合、インポーターは、/indexが続くURLで同じ解決を実行する必要があります。上記の例では、次を探します。

      • foo/bar/baz/index.sass
      • foo/bar/baz/index.scss
      • foo/bar/baz/_index.sass
      • foo/bar/baz/_index.scss

      上記のように、インポーターがこれらのURLの複数でスタイルシートを見つけた場合、インポートがあいまいであることを示す例外をスローする必要があります。

    スタイルシートが見つからない場合、インポーターはnullを返す必要があります。

    canonicalizeを同じURLで複数回呼び出すと、同じ結果が返される必要があります。canonicalizeの以前の呼び出しで返されたURLcanonicalizeを呼び出すと、そのURLが返される必要があります。

    インポーターからロードされたスタイルシート内の相対ロードは、ロードされたURLを、それを含むスタイルシートの正規URLに対する相対として解決し、そのURLをインポーターのcanonicalizeメソッドに渡すことによって処理されます。たとえば、「ロードの解決」の例上記が、@use "mixins"を含むスタイルシートを返したとします。

    • コンパイラーは、現在のスタイルシートの正規URL db:foo/bar/baz/_index.scssに対する相対としてURL mixinsを解決し、db:foo/bar/baz/mixinsを取得します。
    • "db:foo/bar/baz/mixins"canonicalizeを呼び出します。
    • canonicalizenew URL("db:foo/bar/baz/_mixins.scss")を返します。

    このため、canonicalizeは、以前のcanonicalize呼び出しで返されたURLに対する相対URLで呼び出されたときに意味のある結果を返す必要があります。

    スロー

    any - このインポーターがurlを認識するが、それが無効であると判断した場合、Sassによってラップされる例外をスローする可能性があります。例外オブジェクトにmessageプロパティがある場合、それはラップされた例外のメッセージとして使用されます。それ以外の場合は、例外オブジェクトのtoString()が使用されます。これは、インポーターがプレーンな文字列をスローしても安全であることを意味します。

    パラメーター

    • url: string

      ロードされたURL。これは相対である可能性があるため、URLオブジェクトではなく文字列として表現されます。

    • context: CanonicalizeContext

    戻り値 PromiseOr<null | URL, sync>

    このインポーターがurlを認識する場合は絶対URL、認識しない場合はnull。これがnullを返す場合、他のインポーターまたはロードパスがロードを処理する可能性があります。

    これはPromiseを返すこともありますが、その場合はインポーターはcompileAsynccompileStringAsyncにのみ渡すことができ、compileまたはcompileStringには渡すことができません。

  • 指定されたcanonicalUrlのSassテキストをロードするか、このインポーターが参照するスタイルシートを見つけられない場合はnullを返します。

    スロー

    any - このインポーターがurlにスタイルシートを見つけたが、何らかの理由でロードに失敗した場合、またはurlがこのインポーターに一意に関連付けられているが、実際のスタイルシートを参照していない場合、インポーターはSassによってラップされる例外をスローする可能性があります。例外オブジェクトにmessageプロパティがある場合、それはラップされた例外のメッセージとして使用されます。それ以外の場合は、例外オブジェクトのtoString()が使用されます。これは、インポーターがプレーンな文字列をスローしても安全であることを意味します。

    パラメーター

    • canonicalUrl: URL

      ロードするスタイルシートの正規URL。これはcanonicalizeの呼び出しから来ることが保証されていますが、canonicalizeへのすべての呼び出しがloadへの呼び出しにつながるわけではありません。

    戻り値 PromiseOr<null | ImporterResult, sync>

    ロードできる場合はcanonicalUrlにあるスタイルシートの内容。できない場合はnull

    これはPromiseを返すこともありますが、その場合はインポーターはcompileAsynccompileStringAsyncにのみ渡すことができ、compileまたはcompileStringには渡すことができません。