StringOptions<sync>

Optionen, die an compileString oder compileStringAsync übergeben werden können.

Wenn das Feld importer nicht übergeben wird, kann die Einstiegsdatei Dateien relativ zu sich selbst laden, wenn eine file:// URL an das Feld url übergeben wird. Wenn sie übergeben wird, verwendet die Einstiegsdatei diese, um Dateien relativ zu sich selbst zu laden.

Typenparameter

Hierarchie

Input

importer?: Importer<sync> | FileImporter<sync>

Der zu verwendende Importer zur Behandlung von Ladevorgängen, die relativ zur Einstiegs- Stylesheet sind.

Die URL einer relativen Ladung wird zuerst relativ zu url aufgelöst und dann an importer übergeben. (Sie wird unverändert übergeben, wenn url nicht übergeben wird.) Wenn der Importer sie nicht erkennt, wird sie dann an importers und loadPaths übergeben.

loadPaths?: string[]

Pfade, in denen nach Stylesheets gesucht werden soll, die von Regeln wie @use und @import geladen wurden.

Ein Load Path loadPath ist äquivalent zum folgenden FileImporter

{
findFileUrl(url) {
// Load paths only support relative URLs.
if (/^[a-z]+:/i.test(url)) return null;
return new URL(url, pathToFileURL(loadPath));
}
}
syntax?: Syntax

Die Syntax, die zum Parsen des Einstiegs- Stylesheet verwendet werden soll.

Standard

'scss'

url?: URL
Kompatibilität (Undefinierte URL mit Importer)
Dart Sass
seit 1.75.0
Node Sass

Frühere Versionen von Dart Sass erforderten, dass url definiert war, wenn importer übergeben wurde.

Die kanonische URL des Einstiegs- Stylesheet.

Die URL einer relativen Ladung wird zuerst relativ zu url aufgelöst und dann in eine Datei auf der Festplatte aufgelöst, wenn es sich um eine file:// URL handelt. Wenn sie nicht in eine Datei auf der Festplatte aufgelöst werden kann, wird sie dann an importers und loadPaths übergeben.

Output

charset?: boolean
Kompatibilität
Dart Sass
seit 1.54.0
Node Sass

Wenn true, kann der Compiler @charset "UTF-8"; oder U+FEFF (Byte-Order-Mark) voranstellen, wenn er kein ASCII CSS ausgibt.

Wenn false, gibt der Compiler diese Byte-Sequenzen niemals aus. Dies ist ideal, wenn Sie sie verketten oder in HTML <style>-Tags einbetten. (Die Ausgabe wird immer noch in UTF-8 sein.)

Default Value

true

sourceMap?: boolean

Ob Sass eine Source Map generieren soll oder nicht. Wenn ja, ist die Source Map als sourceMap verfügbar.

⚠️ Vorsicht!

Sass fügt dem generierten CSS nicht automatisch einen sourceMappingURL-Kommentar hinzu. Dies liegt in der Verantwortung der Aufrufer, da die Aufrufer die vollständige Kenntnis darüber haben, wo sich das CSS und die Source Map relativ zueinander befinden werden und wie sie an den Browser ausgeliefert werden.

Default Value

false

sourceMapIncludeSources?: boolean

Ob Sass die Quellen in die generierte Source Map aufnehmen soll.

Diese Option hat keine Auswirkung, wenn sourceMap false ist.

Default Value

false

style?: OutputStyle

Der OutputStyle des kompilierten CSS.

Beispiel

const source = `
h1 {
font-size: 40px;
code {
font-face: Roboto Mono;
}
}`;

let result = sass.compileString(source, {style: "expanded"});
console.log(result.css.toString());
// h1 {
// font-size: 40px;
// }
// h1 code {
// font-face: Roboto Mono;
// }

result = sass.compileString(source, {style: "compressed"})
console.log(result.css.toString());
// h1{font-size:40px}h1 code{font-face:Roboto Mono}

Plugins

functions?: Record<string, CustomFunction<sync>>

Zusätzliche eingebaute Sass-Funktionen, die in allen Stylesheets verfügbar sind. Diese Option nimmt ein Objekt entgegen, dessen Schlüssel Sass-Funktionssignaturen sind, wie sie für die Regel @function geschrieben würden, und dessen Werte CustomFunctions sind.

Funktionen erhalten Unterklassen von Value und müssen das gleiche zurückgeben. Wenn der Rückgabewert SassCalculations enthält, werden diese vor der Rückgabe vereinfacht.

Beim Schreiben von benutzerdefinierten Funktionen ist es wichtig, sie so benutzerfreundlich und so nah wie möglich an den Standards der Kernfunktionen von Sass auszurichten. Einige gute Richtlinien sind:

  • Verwenden Sie Value.assert*-Methoden, wie assertString, um untypisierte Value-Objekte in spezifischere Typen zu konvertieren. Für Werte, die direkt als Argumente übergeben wurden, übergeben Sie auch den Argumentnamen. Dies stellt sicher, dass der Benutzer gute Fehlermeldungen erhält, wenn er einen falschen Typ an Ihre Funktion übergibt.

  • Einzelne Klassen können spezifischere assert*-Methoden haben, wie assertInt, die verwendet werden sollten, wenn möglich.

  • In Sass zählt jeder Wert als Liste. Anstatt zu versuchen, den Typ SassList zu erkennen, sollten Sie asList verwenden, um alle Werte als Listen zu behandeln.

  • Beim Manipulieren von Werten wie Listen, Zeichenketten und Zahlen, die Metadaten haben (Komma oder Leerzeichen getrennt, mit oder ohne Klammern, mit oder ohne Anführungszeichen, mit oder ohne Einheiten), sollten die Ausgabemetadaten mit den Eingabemetadaten übereinstimmen.

  • Im Zweifelsfall sollten Listen standardmäßig durch Kommas getrennt sein, Zeichenketten standardmäßig in Anführungszeichen gesetzt sein und Zahlen standardmäßig einheitenlos sein.

  • In Sass verwenden Listen und Zeichenketten eine indizierung ab 1 und negative Indizes, um vom Ende des Werts zu indizieren. Funktionen sollten diese Konventionen befolgen. sassIndexToListIndex und sassIndexToStringIndex können verwendet werden, um dies automatisch zu tun.

  • Sass-Zeichenkettenindizes beziehen sich auf Unicode-Codepunkte, während JavaScript-Zeichenkettenindizes auf UTF-16-Codeeinheiten Bezug nehmen. Zum Beispiel ist das Zeichen U+1F60A SMILING FACE WITH SMILING EYES ein einzelner Unicode-Codepunkt, wird aber in UTF-16 als zwei Codeeinheiten (0xD83D und 0xDE0A) dargestellt. In JavaScript gibt "a😊b".charCodeAt(1) also 0xD83D zurück, während in Sass str-slice("a😊b", 1, 1) "😊" zurückgibt. Funktionen sollten Sass's Konventionen folgen. sassIndexToStringIndex kann verwendet werden, um dies automatisch zu tun, und der Getter sassLength kann verwendet werden, um auf die Länge einer Zeichenkette in Codepunkten zuzugreifen.

Beispiel

sass.compileString(`
h1 {
font-size: pow(2, 5) * 1px;
}`, {
functions: {
// Note: in real code, you should use `math.pow()` from the built-in
// `sass:math` module.
'pow($base, $exponent)': function(args) {
const base = args[0].assertNumber('base').assertNoUnits('base');
const exponent =
args[1].assertNumber('exponent').assertNoUnits('exponent');

return new sass.SassNumber(Math.pow(base.value, exponent.value));
}
}
});
importers?: (NodePackageImporter | Importer<sync> | FileImporter<sync>)[]

Benutzerdefinierte Importer, die steuern, wie Sass Ladevorgänge von Regeln wie @use und @import auflöst.

Ladungen werden gelöst, indem in Reihenfolge

  • Der Importer, der zum Laden des aktuellen Stylesheets verwendet wurde, wobei die geladene URL relativ zur kanonischen URL des aktuellen Stylesheets aufgelöst wurde.

  • Jeder Importer, FileImporter oder NodePackageImporter in importers, in dieser Reihenfolge.

  • Jeder Load Path in loadPaths, in dieser Reihenfolge.

Wenn keiner dieser Einträge eine Sass-Datei zurückgibt, schlägt der Ladevorgang fehl und Sass löst einen Fehler aus.

Messages

alertAscii?: boolean

Wenn dies true ist, wird der Compiler ausschließlich ASCII-Zeichen in seinen Fehler- und Warnmeldungen verwenden. Andernfalls kann er auch Nicht-ASCII-Unicode-Zeichen verwenden. 

Default Value

false

alertColor?: boolean

Wenn dies true ist, wird der Compiler ANSI-Farbcodesequenzen in seinen Fehler- und Warnmeldungen verwenden. Wenn es false ist, wird er diese nicht verwenden. Wenn es undefiniert ist, ermittelt der Compiler, ob Farben verwendet werden sollen, je nachdem, ob der Benutzer ein interaktives Terminal verwendet.

fatalDeprecations?: (DeprecationOrId | Version)[]

Eine Menge von Deprecations, die als fatal

Wenn während der Kompilierung eine Deprecationswarnung eines der bereitgestellten Typen auftritt, wird der Compiler stattdessen einen Fehler ausgeben.

Wenn eine Version angegeben ist, werden alle Deprecations, die in dieser Compilerversion aktiv waren, als fatal

Kompatibilität

dart: "1.74.0", node: false

futureDeprecations?: DeprecationOrId[]

Eine Menge von zukünftigen Deprecations, um sich frühzeitig dafür zu entscheiden.

Zukünftige Deprecations, die hier übergeben werden, werden vom Compiler als aktiv behandelt und bei Bedarf Warnungen ausgegeben .

Kompatibilität

dart: "1.74.0", node: false

logger?: Logger

Ein Objekt, das verwendet wird, um Warnungen und/oder Debug-Meldungen von Sass

Standardmäßig gibt Sass Warnungen und Debug-Meldungen an Standardfehler aus, aber wenn warn oder debug gesetzt ist, werden diese stattdessen aufgerufen.

Der spezielle Wert silent kann verwendet werden, um alle Meldungen

quietDeps?: boolean

Wenn diese Option auf true gesetzt ist, wird Sass keine Warnungen ausgeben, die durch Abhängigkeiten verursacht werden. Eine "Abhängigkeit" ist definiert als jede Datei, die über loadPaths oder importers geladen wird. Stylesheets, die relativ zum Einstiegspunkt importiert werden, gelten nicht als Abhängigkeiten.

Dies ist nützlich, um Deprecationswarnungen zu unterdrücken, die Sie nicht selbst beheben können. Bitte benachrichtigen Sie aber *auch* Ihre Abhängigkeiten über die Deprecations, damit diese so schnell wie möglich behoben werden!

⚠️ Vorsicht!

Wenn compileString oder compileStringAsync ohne url aufgerufen wird, werden *alle* von ihr geladenen Stylesheets als Abhängigkeiten betrachtet. Da sie keinen eigenen Pfad hat, kommen alle von ihr geladenen Inhalte aus einem Load Path und nicht aus einem relativen Import.

Default Value

false

silenceDeprecations?: DeprecationOrId[]

Eine Menge von aktiven Deprecations, die ignoriert

Wenn während der Kompilierung eine Deprecationswarnung eines der bereitgestellten Typen auftritt, wird der Compiler sie stattdessen ignorieren .

⚠️ Vorsicht!

Die veraltete Funktionalität, von der Sie abhängig sind, wird irgendwann brechen.

Kompatibilität

dart: "1.74.0", node: false

verbose?: boolean

Standardmäßig gibt Dart Sass nur fünf Instanzen derselben Deprecation-Warnung pro Kompilierung aus, um die Benutzer nicht mit Konsolenlärm zu überfluten. Wenn Sie verbose auf true setzen, gibt es stattdessen jede Deprecation-Warnung aus, die es findet.

Default Value

false