インポーター<sync>
型パラメーター
-
sync extends "sync" | "async" = "sync" | "async"
Importer<'sync'>
のcanonicalizeとloadは同期的に返す必要がありますが、代わりにcompileとcompileStringに加えて、compileAsyncとcompileStringAsyncに渡すことができます。Importer<'async'>
のcanonicalizeとloadは、同期的に返すことも非同期的に返すこともできますが、compileAsyncとcompileStringAsyncでのみ使用できます。
階層
- インポーター
インデックス
プロパティ
メソッド
プロパティ
オプション
非正規スキーム
このインポーターがcanonicalizeによって返されるURLに絶対に使用しないことを約束するURLスキームまたはスキームのセット(:
なし)。これらのスキームの1つでURLを返した場合、エラーになります。
これが設定されている場合、非正規スキームを持つURLのcanonicalizeへの呼び出しは、containingUrlが既知の場合は渡されます。
これらのスキームには、小文字のASCII文字、ASCII数字、+
、-
、および.
のみを含めることができます。空にすることはできません。
メソッド
canonicalize
- canonicalize(url: string, context: CanonicalizeContext): PromiseOr<null | URL, sync>
-
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の以前の呼び出しで返されたURLでcanonicalizeを呼び出すと、そのURLが返される必要があります。
インポーターからロードされたスタイルシート内の相対ロードは、ロードされたURLを、それを含むスタイルシートの正規URLに対する相対として解決し、そのURLをインポーターのcanonicalizeメソッドに渡すことによって処理されます。たとえば、「ロードの解決」の例上記が、
@use "mixins"
を含むスタイルシートを返したとします。- コンパイラーは、現在のスタイルシートの正規URL
db:foo/bar/baz/_index.scss
に対する相対としてURLmixins
を解決し、db:foo/bar/baz/mixins
を取得します。 "db:foo/bar/baz/mixins"
でcanonicalizeを呼び出します。- canonicalizeは
new 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
を返すこともありますが、その場合はインポーターはcompileAsyncとcompileStringAsyncにのみ渡すことができ、compileまたはcompileStringには渡すことができません。
load
- load(canonicalUrl: URL): PromiseOr<null | ImporterResult, sync>
-
指定された
canonicalUrl
のSassテキストをロードするか、このインポーターが参照するスタイルシートを見つけられない場合はnull
を返します。スロー
any - このインポーターが
url
にスタイルシートを見つけたが、何らかの理由でロードに失敗した場合、またはurl
がこのインポーターに一意に関連付けられているが、実際のスタイルシートを参照していない場合、インポーターはSassによってラップされる例外をスローする可能性があります。例外オブジェクトにmessage
プロパティがある場合、それはラップされた例外のメッセージとして使用されます。それ以外の場合は、例外オブジェクトのtoString()
が使用されます。これは、インポーターがプレーンな文字列をスローしても安全であることを意味します。パラメーター
-
canonicalUrl: URL
ロードするスタイルシートの正規URL。これはcanonicalizeの呼び出しから来ることが保証されていますが、canonicalizeへのすべての呼び出しがloadへの呼び出しにつながるわけではありません。
戻り値 PromiseOr<null | ImporterResult, sync>
ロードできる場合は
canonicalUrl
にあるスタイルシートの内容。できない場合はnull
。これは
Promise
を返すこともありますが、その場合はインポーターはcompileAsyncとcompileStringAsyncにのみ渡すことができ、compileまたはcompileStringには渡すことができません。 -
@use
規則および@import
規則のカスタムSassロードロジックを実装するオブジェクトです。 importersまたはimporterに渡すことができます。ディスク上のファイルにリダイレクトするだけのインポーターは、代わりにFileImporterインターフェイスを使用することをお勧めします。
ロードの解決
これは、カスタムインポーターを使用してロードを解決するプロセスです
@use "db:foo/bar/baz"
を検出します。"db:foo/bar/baz"
を指定してcanonicalizeを呼び出します。new URL("db:foo/bar/baz/_index.scss")
を返します。new URL("db:foo/bar/baz/_index.scss")
を指定してloadを呼び出します。複数のインポーターとロードパスを使用してロードが解決される方法の詳細については、importersを参照してください。
例