StringOptionsWithImporter<sync>

可以传递给 compileStringcompileStringAsync 的选项。

如果传递了 importer 字段,入口文件使用它来加载相对于自身的文件,并且 url 字段是 必需的。

类型参数

层次结构

输入

导入程序: Importer<sync> | FileImporter<sync>

用于处理相对于入口点样式表的加载的导入程序 

相对加载的URL首先相对于url进行解析,然后传递给importer。如果导入程序无法识别它,则将其传递给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

入口样式表的规范 URL。如果此项与 importer 一起传递,它将用于解析入口样式表中的相对加载 

输出

charset?: boolean
兼容性
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 不会自动向生成的 CSS 添加 sourceMappingURL 注释。由调用方来完成此操作,因为调用方完全了解 CSS 和源映射之间的相对位置以及它们将如何提供给 浏览器。

默认值

false

sourceMapIncludeSources?: 布尔值

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 rule 编写的那样,而其值是 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 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?: 布尔值

如果为 true,编译器将仅在错误和警告消息中使用 ASCII 字符。否则,它可能还会使用非 ASCII Unicode 字符。

默认值

false

alertColor?: 布尔值

如果为 true,编译器将在错误和警告消息中使用 ANSI 颜色转义代码。如果为 false,则不会使用这些代码。如果未定义,编译器将根据用户是否使用交互式终端来确定是否使用颜色。

logger?: Logger

用于处理 Sass 警告和/或调试消息的对象。

默认情况下,Sass 会向标准错误输出警告和调试消息,但如果设置了 warndebug,它们将代替标准错误输出。

特殊值 silent 可用于轻松地使所有消息静默。

quietDeps?: 布尔值

如果此选项设置为 true,Sass 不会打印由依赖项引起的警告。将通过 loadPathsimporters 加载的任何文件定义为“依赖项”。相对于入口点导入的样式表不被视为依赖项。

这对于使你无法自行修复的弃用警告静默很有用。但是,请将弃用通知你的依赖项,以便它们可以尽快修复!

⚠️ 注意!

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

默认值

false

verbose?: 布尔值

默认情况下,Dart Sass 每次编译仅打印相同弃用警告的五个实例,以避免用户在控制台噪声中迷失。如果你将 verbose 设置为 true,它将打印遇到的每个弃用警告。 

默认值

false