StringOptions<sync>

可以傳遞給 compileStringcompileStringAsync 的選項。

如果沒有傳遞 importer 欄位,則如果將 file:// URL 傳遞給 url 欄位,則入口點檔案可以載入相對於自身的檔案。如果傳遞了該欄位,則入口點檔案會使用它來載入相對於自身的檔案。

類型參數

階層

輸入

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

用於處理相對於入口樣式表之載入的導入器。

相對載入的網址會先相對於 url 解析,然後傳遞給 importer。(如果未傳遞 url,則會按原樣傳遞。)如果導入器無法辨識,則會傳遞給 importersloadPaths

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));
}
}
syntax?: Syntax

用於解析入口樣式表的 Syntax

預設值

'scss'

url?: URL
相容性(使用 importer 時未定義的網址)
Dart Sass
自 1.75.0 版起
Node Sass

早期版本的 Dart Sass 要求在傳遞 importer 時定義 url

入口樣式表的標準網址。

相對載入的 URL 會先相對於 url 解析,如果是 file:// URL,則會解析為磁碟上的檔案。如果無法解析為磁碟上的檔案,則會將其傳遞給 importersloadPaths

輸出

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

編譯後 CSS 的 OutputStyle

範例

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 函式。此選項接受一個物件,其鍵是您為 @function 規則 撰寫的 Sass 函式簽名,而其值是 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 中表示為兩個字碼單元(`0xD83D` 和 `0xDE0A`)。因此,在 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?: boolean

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

這對於隱藏您無法自行修復的棄用警告很有用。然而,也請通知您的依賴項這些棄用警告,以便它們能盡快得到修復!

⚠️ 注意!

如果呼叫 compileStringcompileStringAsync 時沒有提供 url,它載入的*所有*樣式表都將被視為依賴項。由於它沒有自己的路徑,它載入的所有內容都來自載入路徑,而不是相對導入。

預設值

false

silenceDeprecations?: DeprecationOrId[]

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

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

⚠️ 注意!

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

相容性

dart: "1.74.0", node: false

verbose?: boolean

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

預設值

false