Importer<sync>
Typenparameter
-
sync extends "sync" | "async" = "sync" | "async"
Die Methoden canonicalize und load eines
Importer<'sync'>müssen synchron zurückkehren. Dafür kann es jedoch an compile und compileString sowie an compileAsync und compileStringAsync übergeben werden.Die Methoden canonicalize und load eines
Importer<'async'>können synchron oder asynchron zurückkehren, aber es kann nur mit compileAsync und compileStringAsync verwendet werden.
Hierarchie
- Importer
Index
Eigenschaften
Methoden
Eigenschaften
Optional nonCanonicalScheme
Ein URL-Schema oder eine Menge von Schemata (ohne den :), die dieser Importer niemals für von canonicalize zurückgegebene URLs verspricht zu verwenden. Wenn er eine URL mit einem dieser Schemata zurückgibt, ist dies ein Fehler.
Wenn dies gesetzt ist, wird jeder Aufruf von canonicalize für eine URL mit einem nicht-kanonischen Schema an containingUrl übergeben, falls bekannt ist.
Diese Schemata dürfen nur Kleinbuchstaben des ASCII-Zeichensatzes, ASCII-Ziffern, +, - und . enthalten. Sie dürfen nicht leer sein.
Methoden
canonicalize
- canonicalize(url: string, context: CanonicalizeContext): PromiseOr<null | URL, sync>
-
Wenn die
urlvon diesem Importer erkannt wird, wird ihr kanonisches Format zurückgegeben.Wenn Sass bereits ein Stylesheet mit der zurückgegebenen kanonischen URL geladen hat, wird der vorhandene Parse-Baum (und das geladene Modul für
@use) wiederverwendet. Das bedeutet, dass Importer **sicherstellen müssen**, dass dieselbe kanonische URL immer auf dasselbe Stylesheet verweist, *auch über verschiedene Importer hinweg*. Daher wird empfohlen, dass Importer eindeutige URL-Schemata verwenden, um sich voneinander zu unterscheiden und klarzustellen.Nach Möglichkeit sollten benutzerdefinierte Importer URLs genauso kanonisieren wie der integrierte Dateisystem- Importer.
Der Importer sollte nach Stylesheets suchen, indem er dem Basisnamen der URL das Präfix
_voranstellt und die Erweiterungen.sassund.scsshinzufügt, falls die URL noch keine dieser Erweiterungen hat. Wenn die URL beispielsweisefoo/bar/bazwäre, würde der Importer nachfoo/bar/baz.sassfoo/bar/baz.scssfoo/bar/_baz.sassfoo/bar/_baz.scss
suchen. Wenn die URL
foo/bar/baz.scsswäre, würde der Importer nur nachfoo/bar/baz.scssfoo/bar/_baz.scss
suchen. Wenn der Importer ein Stylesheet unter mehr als einer dieser URLs findet, sollte er eine Ausnahme auslösen, die besagt, dass die URL mehrdeutig ist. Beachten Sie, dass, wenn die Erweiterung explizit angegeben ist, ein Stylesheet mit der umgekehrten Erweiterung existieren darf darf.
Wenn keiner der möglichen Pfade gültig ist, sollte der Importer die gleiche Auflösung für die URL gefolgt von
/indexdurchführen. Im obigen Beispiel würde er nachfoo/bar/baz/index.sassfoo/bar/baz/index.scssfoo/bar/baz/_index.sassfoo/bar/baz/_index.scss
suchen. Wie oben gilt: Wenn der Importer ein Stylesheet unter mehr als einer dieser URLs findet, sollte er eine Ausnahme auslösen, die besagt, dass der Import mehrdeutig ist.
Wenn keine Stylesheets gefunden werden, sollte der Importer
nullzurückgeben.Mehrfache Aufrufe von canonicalize mit derselben URL müssen dasselbe Ergebnis liefern. Ein Aufruf von canonicalize mit einer URL, die von einem vorherigen Aufruf von canonicalize zurückgegeben wurde, muss diese URL zurückgeben.
Relative Ladevorgänge in Stylesheets, die von einem Importer geladen wurden, werden gehandhabt, indem die geladene URL relativ zur kanonischen URL des Stylesheets, das sie enthält, aufgelöst und diese URL zurück an die Methode canonicalize des Importers übergeben wird. Angenommen zum Beispiel, das Beispiel "Auflösung eines Ladevorgangs" oben gab ein Stylesheet zurück, das
@use "mixins"enthielt.- Der Compiler löst die URL
mixinsrelativ zur kanonischen URLdb:foo/bar/baz/_index.scssdes aktuellen Stylesheets auf, umdb:foo/bar/baz/mixinszu erhalten. - Er ruft canonicalize mit
"db:foo/bar/baz/mixins"auf. - canonicalize gibt
new URL("db:foo/bar/baz/_mixins.scss")zurück.
Aus diesem Grund muss canonicalize ein sinnvolles Ergebnis zurückgeben, wenn es mit einer URL aufgerufen wird, die relativ zu einer früheren Rückgabe von canonicalize ist.
Wirft
beliebig - Wenn dieser Importer
urlerkennt, aber feststellt, dass sie ungültig ist, kann er eine Ausnahme auslösen, die von Sass umschlossen wird. Wenn das Ausnahmeobjekt eine Eigenschaftmessagehat, wird diese als Nachricht der umschlossenen Ausnahme verwendet; andernfalls wird die MethodetoString()des Ausnahmeobjekts verwendet. Das bedeutet, dass es für Importer sicher ist, einfache Strings auszulösen.Parameter
-
url: string
Die geladene URL. Da dies relativ sein kann, wird es als String und nicht als URL- Objekt dargestellt.
-
context: CanonicalizeContext
Gibt PromiseOr<null | URL, sync> zurück
Eine absolute URL, wenn dieser Importer die
urlerkennt, odernull, wenn nicht. Wennnullzurückgegeben wird, können andere Importer oder load paths den Ladevorgang behandeln.Dies kann auch ein
Promisezurückgeben, aber wenn dies der Fall ist, kann der Importer nur an compileAsync und compileStringAsync übergeben werden, nicht an compile oder compileString.
load
- load(canonicalUrl: URL): PromiseOr<null | ImporterResult, sync>
-
Lädt den Sass-Text für die gegebene
canonicalUrl, oder gibtnullzurück, wenn dieser Importer das referenzierte Stylesheet nicht finden kann kann.Wirft
beliebig - Wenn dieser Importer ein Stylesheet unter
urlfindet, aber aus irgendeinem Grund nicht laden kann, oder wennurleindeutig mit diesem Importer verknüpft ist, aber nicht auf ein echtes Stylesheet verweist, kann der Importer eine Ausnahme auslösen, die von Sass umschlossen wird. Wenn das Ausnahmeobjekt eine Eigenschaftmessagehat, wird diese als Nachricht der umschlossenen Ausnahme verwendet; andernfalls wird die MethodetoString()des Ausnahmeobjekts verwendet. Das bedeutet, dass es für Importer sicher ist, einfache Strings auszulösen.Parameter
-
canonicalUrl: URL
Die kanonische URL des zu ladenden Stylesheets. Diese stammt garantiert von einem Aufruf von canonicalize, obwohl nicht jeder Aufruf von canonicalize zu einem Aufruf von load führt.
Gibt PromiseOr<null | ImporterResult, sync> zurück
Der Inhalt des Stylesheets unter
canonicalUrl, wenn es geladen werden kann, odernull, wenn es nicht geladen werden kann.Dies kann auch ein
Promisezurückgeben, aber wenn dies der Fall ist, kann der Importer nur an compileAsync und compileStringAsync übergeben werden, nicht an compile oder compileString. -
Ein Objekt, das eine benutzerdefinierte Sass-Ladelogik für
@useRegeln und@importRegeln implementiert. Es kann an importers oder importer übergeben werden.Für Importer, die einfach auf Dateien auf der Festplatte umleiten, wird die Verwendung der FileImporter-Schnittstelle empfohlen.
Auflösung eines Ladevorgangs
Dies ist der Prozess der Auflösung eines Ladevorgangs mithilfe eines benutzerdefinierten Importers.
@use "db:foo/bar/baz"."db:foo/bar/baz"auf.new URL("db:foo/bar/baz/_index.scss")zurück.new URL("db:foo/bar/baz/_index.scss")auf.Weitere Details zur Auflösung von Ladevorgängen mithilfe mehrerer Importer und Lade pfade finden Sie unter importers.
Beispiel