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

已编译 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 中,每个值都被视为列表。与其尝试检测SassList类型,不如使用asList将所有值都视为列表。

  • 在操作具有元数据(逗号分隔还是空格分隔、方括号括起来还是不括起来、带引号还是不带引号、单位)的值(如列表、字符串和数字)时,输出元数据应与输入元数据匹配。

  • 如有疑问,列表应默认为逗号分隔,字符串应默认为带引号,数字应默认为无单位。

  • 在 Sass 中,列表和字符串使用基于 1 的索引,并使用负索引从值的末尾开始索引。函数应遵循这些约定。sassIndexToListIndexsassIndexToStringIndex可以自动执行此操作。

  • Sass 中的字符串索引指的是 Unicode 代码点,而 JavaScript 字符串索引指的是UTF-16 代码单元。例如,字符 U+1F60A SMILING FACE WITH SMILING EYES 是一个 Unicode 代码点,但在 UTF-16 中表示为两个代码单元(0xD83D0xDE0A)。因此,在 JavaScript 中,"a😊b".charCodeAt(1)返回0xD83D,而在 Sass 中,str-slice("a😊b", 1, 1)返回"😊"。函数应遵循 Sass 的约定。sassIndexToStringIndex可以自动执行此操作,并且可以使用sassLength获取器访问字符串的代码点长度。

示例

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)的加载的自定义导入器。

通过按顺序尝试以下方式解析加载:

  • 用于加载当前样式表的导入器,其中加载的URL相对于当前样式表的规范URL解析。

  • importers中每个ImporterFileImporterNodePackageImporter,按顺序。

  • loadPaths中的每个加载路径,按顺序。

如果这些都不返回 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加载的任何文件。相对于入口点导入的样式表不被视为依赖项。

这对于静默无法自行修复的弃用警告很有用。但是,请通知您的依赖项弃用情况,以便它们能够尽快得到修复!

⚠️ 注意!

如果在不使用url的情况下调用compileStringcompileStringAsync,则它加载的所有样式表都将被视为依赖项。由于它本身没有路径,因此它加载的所有内容都来自加载路径而不是相对导入。

默认值

false

silenceDeprecations?: DeprecationOrId[]

一组要忽略的活动弃用。

如果在编译期间遇到任何提供的类型的弃用警告,编译器将改为忽略它。

⚠️ 注意!

您依赖的已弃用功能最终将失效。

兼容性

dart: "1.74.0", node: false

verbose?: boolean

默认情况下,Dart Sass 每次编译只会打印同一弃用警告的五个实例,以避免在控制台中产生过多的噪音。如果将verbose设置为true,它将改为打印遇到的每个弃用警告。

默认值

false