Options<sync>

可以傳遞給 compilecompileAsynccompileStringcompileStringAsync 的選項。

類型參數

階層

輸入

loadPaths?: string[]

用於搜尋樣式表的路徑,例如透過 @use@import 規則載入的樣式表。

載入路徑 loadPath 等同於以下的 FileImporter

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

輸出

charset?: boolean
相容性
Dart Sass
自 1.54.0 版本起
Node Sass

如果設為 true,編譯器可能會在輸出非 ASCII 的 CSS 時,在檔案開頭加上 @charset "UTF-8"; 或 U+FEFF(位元組順序標記)。

如果設為 false,編譯器永遠不會輸出這些位元組序列。這在串接或嵌入 HTML <style> 標籤時是理想的。(輸出仍將是 UTF-8。)

預設值

true

sourceMap?: boolean

Sass 是否應該產生來源映射。如果是,來源映射將作為 sourceMap 提供。

⚠️ 注意!

Sass 不會自動將 sourceMappingURL 註釋添加到產生的 CSS 中。這取決於呼叫者自行添加,因為呼叫者完全了解 CSS 和來源映射彼此之間的位置關係,以及它們將如何提供給瀏覽器。

預設值

false

sourceMapIncludeSources?: boolean

Sass 是否應該在產生的來源映射中包含來源。

如果 sourceMapfalse,則此選項無效。

預設值

false

style?: OutputStyle

編譯後 CSSOutputStyle

範例

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}

外掛程式

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

在所有樣式表中可用的額外內建 Sass 函式。此選項接受一個物件,其鍵是 Sass 函式簽章,就像您為 @function 規則 編寫的簽章一樣,其值是 CustomFunction

函式會傳遞 Value 的子類別,並且必須返回相同的子類別。如果返回值包含 SassCalculation,它們將在返回之前被簡化。

編寫自訂函式時,重要的是要讓它們盡可能地使用者友善,並盡可能地接近 Sass 核心函式設定的標準。一些需要遵循的良好準則包括

  • 使用 Value.assert* 方法,例如 assertString,將未類型化的 Value 物件轉換為更具體的類型。對於直接作為參數傳遞的值,也請傳入參數名稱。這可確保當使用者向您的函式傳遞錯誤類型時,他們會收到良好的錯誤訊息。

  • 個別的類別可能具有更具體的 assert* 方法,例如 assertInt,應盡可能使用這些方法。

  • 在 Sass 中,每個值都被視為一個列表。您應該使用 asList 將所有值視為列表,而不是嘗試偵測 SassList 類型。

  • 處理具有中繼資料(逗號分隔與空格分隔、括號與不括號、引號與不引號、單位)的值(如列表、字串和數字)時,輸出中繼資料應與輸入中繼資料相符。

  • 如有疑問,列表應預設為逗號分隔,字串應預設為引號括住,數字應預設為無單位。

  • 在 Sass 中,列表和字串使用以 1 為基底的索引,並使用負索引從值的末尾開始索引。函式應遵循這些慣例。可以使用 sassIndexToListIndexsassIndexToStringIndex 自動執行此操作。

  • Sass 中的字串索引是指 Unicode 字碼點,而 JavaScript 字串索引是指 UTF-16 字碼單位。例如,字元 U+1F60A 笑臉符號 😊 是一個 Unicode 字碼點,但在 UTF-16 中表示為兩個字碼單位(0xD83D0xDE0A)。所以在 JavaScript 中,"a😊b".charCodeAt(1) 會返回 0xD83D,而在 Sass 中,str-slice("a😊b", 1, 1) 會返回 "😊"。函式應遵循 Sass 的慣例。可以使用 sassIndexToStringIndex 自動執行此操作,並且可以使用 sassLength getter 讀取字串在字碼點中的長度。

範例

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>)[]

控制 Sass 如何解析像是 @use@import 等規則載入的客製化導入器。

載入解析的嘗試順序如下:

如果這些都找不到 Sass 檔案,載入就會失敗,Sass 也會拋出錯誤。

訊息

alertAscii?: boolean

如果設定為 true,編譯器將只在其錯誤和警告訊息中使用 ASCII 字元。否則,它也可能使用非 ASCII 的 Unicode 字元。

預設值

false

alertColor?: boolean

如果設定為 true,編譯器將在其錯誤和警告訊息中使用 ANSI 色碼。如果設定為 false,則不會使用這些色碼。如果未定義,編譯器將根據使用者是否使用互動式終端機來決定是否使用顏色。

fatalDeprecations?: (DeprecationOrId | Version)[]

一組要視為致命的棄用警告。

如果在編譯期間遇到任何提供的類型的棄用警告,編譯器將會報錯。

如果提供 Version,則該編譯器版本中所有有效的棄用警告都將視為致命。

相容性

dart: "1.74.0", node: false

futureDeprecations?: DeprecationOrId[]

一組要提前啟用的未來棄用警告。

這裡傳入的未來棄用警告將被編譯器視為有效,並在必要時發出警告。

相容性

dart: "1.74.0", node: false

logger?: Logger

用於處理來自 Sass 的警告和/或除錯訊息的物件。

預設情況下,Sass 將警告和除錯訊息發送到標準錯誤輸出,但如果設定了 warndebug,則會改為呼叫它們。

特殊值 silent 可用於輕鬆地讓所有訊息靜音。

quietDeps?: 布林值

如果此選項設定為 true,Sass 將不會列印由相依性引起的警告。「相依性」定義為任何透過 loadPathsimporters 載入的檔案。相對於入口點匯入的樣式表不被視為相依性。

這對於讓您無法自行修復的棄用警告靜音很有用。但是,也請通知您的相依性這些棄用,以便它們可以盡快修復!

⚠️ 注意!

如果在沒有 url 的情況下呼叫 compileStringcompileStringAsync,它載入的*所有*樣式表都將被視為相依性。由於它沒有自己的路徑,它載入的所有內容都來自載入路徑,而不是相對匯入。

預設值

false

silenceDeprecations?: DeprecationOrId[]

要忽略的一組啟用的棄用。

如果在編譯期間遇到任何提供的棄用類型警告,編譯器將忽略它。

⚠️ 注意!

您所依賴的已棄用功能最終將會失效。

相容性

dart: "1.74.0", node: false

verbose?: 布林值

預設情況下,Dart Sass 每次編譯只會列印五個相同的棄用警告,以避免在控制台中充斥大量雜訊。如果您將 verbose 設定為 true,它將會列印遇到的每個棄用警告。

預設值

false