Options<sync>
類型參數
-
sync extends "sync" | "async"
這讓 TypeScript 檢查器可以驗證非同步 Importer、FileImporter 和 CustomFunction 沒有傳遞給 compile 或 compileString。
階層
輸入
選用
loadPaths
用於搜尋樣式表的路徑,例如透過 @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
- Dart Sass
- 自 1.54.0 版本起
- Node Sass
- ✗
如果設為 true
,編譯器可能會在輸出非 ASCII 的 CSS 時,在檔案開頭加上 @charset "UTF-8";
或 U+FEFF(位元組順序標記)。
如果設為 false
,編譯器永遠不會輸出這些位元組序列。這在串接或嵌入 HTML <style>
標籤時是理想的。(輸出仍將是 UTF-8。)
預設值
true
選用
sourceMap
Sass 是否應該產生來源映射。如果是,來源映射將作為 sourceMap 提供。
⚠️ 注意!
Sass 不會自動將 sourceMappingURL
註釋添加到產生的 CSS 中。這取決於呼叫者自行添加,因為呼叫者完全了解 CSS 和來源映射彼此之間的位置關係,以及它們將如何提供給瀏覽器。
預設值
false
選用
sourceMapIncludeSources
選用
style
編譯後 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
在所有樣式表中可用的額外內建 Sass 函式。此選項接受一個物件,其鍵是 Sass 函式簽章,就像您為 @function 規則
編寫的簽章一樣,其值是 CustomFunction。
函式會傳遞 Value 的子類別,並且必須返回相同的子類別。如果返回值包含 SassCalculation,它們將在返回之前被簡化。
編寫自訂函式時,重要的是要讓它們盡可能地使用者友善,並盡可能地接近 Sass 核心函式設定的標準。一些需要遵循的良好準則包括
使用
Value.assert*
方法,例如 assertString,將未類型化的Value
物件轉換為更具體的類型。對於直接作為參數傳遞的值,也請傳入參數名稱。這可確保當使用者向您的函式傳遞錯誤類型時,他們會收到良好的錯誤訊息。個別的類別可能具有更具體的
assert*
方法,例如 assertInt,應盡可能使用這些方法。在 Sass 中,每個值都被視為一個列表。您應該使用 asList 將所有值視為列表,而不是嘗試偵測 SassList 類型。
處理具有中繼資料(逗號分隔與空格分隔、括號與不括號、引號與不引號、單位)的值(如列表、字串和數字)時,輸出中繼資料應與輸入中繼資料相符。
如有疑問,列表應預設為逗號分隔,字串應預設為引號括住,數字應預設為無單位。
在 Sass 中,列表和字串使用以 1 為基底的索引,並使用負索引從值的末尾開始索引。函式應遵循這些慣例。可以使用 sassIndexToListIndex 和 sassIndexToStringIndex 自動執行此操作。
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
控制 Sass 如何解析像是 @use
和 @import
等規則載入的客製化導入器。
載入解析的嘗試順序如下:
用於載入目前樣式表的導入器,其載入的網址會解析為相對於目前樣式表的標準網址。
依序使用 Importer、FileImporter 或 NodePackageImporter 中的 importers。
依序使用 loadPaths 中的每個載入路徑。
如果這些都找不到 Sass 檔案,載入就會失敗,Sass 也會拋出錯誤。
訊息
選用
alertAscii
如果設定為 true
,編譯器將只在其錯誤和警告訊息中使用 ASCII 字元。否則,它也可能使用非 ASCII 的 Unicode 字元。
預設值
false
選用
alertColor
如果設定為 true
,編譯器將在其錯誤和警告訊息中使用 ANSI 色碼。如果設定為 false
,則不會使用這些色碼。如果未定義,編譯器將根據使用者是否使用互動式終端機來決定是否使用顏色。
選用
fatalDeprecations
一組要視為致命的棄用警告。
如果在編譯期間遇到任何提供的類型的棄用警告,編譯器將會報錯。
如果提供 Version
,則該編譯器版本中所有有效的棄用警告都將視為致命。
相容性
dart: "1.74.0", node: false
選用
futureDeprecations
一組要提前啟用的未來棄用警告。
這裡傳入的未來棄用警告將被編譯器視為有效,並在必要時發出警告。
相容性
dart: "1.74.0", node: false
選用
logger
選用
quietDeps
如果此選項設定為 true
,Sass 將不會列印由相依性引起的警告。「相依性」定義為任何透過 loadPaths 或 importers 載入的檔案。相對於入口點匯入的樣式表不被視為相依性。
這對於讓您無法自行修復的棄用警告靜音很有用。但是,也請通知您的相依性這些棄用,以便它們可以盡快修復!
⚠️ 注意!
如果在沒有 url 的情況下呼叫 compileString 或 compileStringAsync,它載入的*所有*樣式表都將被視為相依性。由於它沒有自己的路徑,它載入的所有內容都來自載入路徑,而不是相對匯入。
預設值
false
選用
silenceDeprecations
要忽略的一組啟用的棄用。
如果在編譯期間遇到任何提供的棄用類型警告,編譯器將忽略它。
⚠️ 注意!
您所依賴的已棄用功能最終將會失效。
相容性
dart: "1.74.0", node: false
選用
verbose
預設情況下,Dart Sass 每次編譯只會列印五個相同的棄用警告,以避免在控制台中充斥大量雜訊。如果您將 verbose
設定為 true
,它將會列印遇到的每個棄用警告。
預設值
false
可以傳遞給 compile、compileAsync、compileString 或 compileStringAsync 的選項。