Dark Sass Dark-sass

Dart Sass 可执行文件可以通过两种模式之一调用。

一对一模式

sass <input.scss> [output.css]

一对一模式将单个输入文件 (input.scss) 编译到单个输出位置 (output.css)。如果未传递输出位置,则编译后的 CSS 将打印到终端。

如果输入文件的扩展名为 .scss,则将其解析为 SCSS;如果其扩展名为 .sass,则将其解析为 缩进语法;如果其扩展名为 .css,则将其解析为 纯 CSS。如果它没有这三个扩展名之一,或者它来自标准输入,则默认情况下将其解析为 SCSS。这可以通过 --indented 标志 进行控制。

可以传递特殊字符串 - 来代替输入文件,以告诉 Sass 从 标准输入 读取输入文件。除非传递了 --indented 标志,否则 Sass 将默认将其解析为 SCSS。

多对多模式

兼容性: Dart Sass | since 1.4.0

sass [<input.scss>:<output.css>] [<input/>:<output/>]...

多对多模式将一个或多个输入文件编译为一个或多个输出文件。输入与输出用冒号分隔。它还可以将一个目录中的所有 Sass 文件编译为另一个目录中同名的 CSS 文件。

bash
# 将 style.scss 编译为 style.css。
$ sass style.scss:style.css

# 将 light.scss 和 dark.scss 编译为 light.css 和 dark.css。
$ sass light.scss:light.css dark.scss:dark.css

# 将 themes/ 中的所有 Sass 文件编译为 public/css/ 中的 CSS 文件。
$ sass themes:public/css

编译整个目录时,Sass 将忽略名称以 _ 开头的 部分文件。您可以使用部分文件来分离样式表,而无需创建一堆不必要的输出文件。

Options

输入和输出

这些选项控制 Sass 如何加载其输入文件以及如何生成输出文件。

--stdin

此标志是告诉 Sass 应从 标准输入 读取其输入文件的另一种方式。传递此标志时,不得传递任何输入文件。

bash
$ echo "h1 {font-size: 40px}" | sass --stdin h1.css
$ echo "h1 {font-size: 40px}" | sass --stdin
css
h1 {
  font-size: 40px;
}

--stdin 标志不能与 多对多模式 一起使用。

--indented

此标志指示 Sass 将输入文件解析为 缩进语法。如果在 多对多模式 中使用,则所有输入文件都将解析为缩进语法,尽管它们 使用 的文件将像往常一样确定其语法。相反,--no-indented 可用于强制将所有输入文件解析为 SCSS

--indented 标志在输入文件来自标准输入 时最有用,因此无法自动确定其语法。

css
$ echo -e 'h1\n  font-size: 40px' | sass --indented -
h1 {
  font-size: 40px;
}

--load-path

此选项(缩写为 -I)为 Sass 添加额外的 加载路径 以查找样式表。可以多次传递此选项以提供多个加载路径。较早的加载路径将优先于较晚的加载路径。

bash
$ sass --load-path=node_modules/bootstrap/dist/css style.scss style.css

--style

此选项(缩写为 -s)控制生成的 CSS 的输出样式。Dart Sass 支持两种输出样式:

  • expanded(默认)将每个选择器和声明写在自己的行上。
  • compressed 删除尽可能多的多余字符,并将整个样式表写在一行上。
css
$ sass --style=expanded style.scss
h1 {
  font-size: 40px;
}

$ sass --style=compressed style.scss
h1{font-size:40px}

--no-charset

兼容性: Dart Sass | since 1.19.0

此标志告知 Sass 永远不要发出 @charset 声明或 UTF-8 字节顺序标记。默认情况下,或者如果传递了 --charset,则如果样式表包含任何非 ASCII 字符,Sass 将插入 @charset 声明(在扩展输出模式下)或字节顺序标记(在压缩输出模式下)。

scss
$ echo 'h1::before {content: "👭"}' | sass --no-charset
h1::before {
  content: "👭";
}

$ echo 'h1::before {content: "👭"}' | sass --charset
@charset "UTF-8";
h1::before {
  content: "👭";
}

--error-css

兼容性: Dart Sass | since 1.20.0

此标志告诉 Sass 在编译期间发生错误时是否发出 CSS 文件。此 CSS 文件在注释中和 body::beforecontent 属性中描述了错误,这样您就可以在浏览器中看到错误消息,而无需切换回终端。

默认情况下,如果您编译到磁盘上的至少一个文件(而不是标准输出),则错误 CSS 已启用。您可以明确传递 --error-css 以在编译到标准输出时启用它,或者传递 --no-error-css 以在所有地方禁用它。当它被禁用时,--update 标志--watch 标志 将在发生错误时删除 CSS 文件。

scss
$ sass --error-css style.scss style.css
/* Error: Incompatible units em and px.
 *   ,
 * 1 | $width: 15px + 2em;
 *   |         ^^^^^^^^^^
 *   '
 *   test.scss 1:9  root stylesheet */

body::before {
  font-family: "Source Code Pro", "SF Mono", Monaco, Inconsolata, "Fira Mono",
      "Droid Sans Mono", monospace, monospace;
  white-space: pre;
  display: block;
  padding: 1em;
  margin-bottom: 1em;
  border-bottom: 2px solid black;
  content: "Error: Incompatible units em and px.\a   \2577 \a 1 \2502  $width: 15px + 2em;\a   \2502          ^^^^^^^^^^\a   \2575 \a   test.scss 1:9  root stylesheet";
}
Error: Incompatible units em and px.
1 │ $width: 15px + 2em;
  │         ^^^^^^^^^^
  test.scss 1:9  root stylesheet

--update

兼容性: Dart Sass | since 1.4.0

如果传递了 --update 标志,Sass 将仅编译依赖项修改时间比生成相应 CSS 文件时间更近的样式表。它还会在更新样式表时打印状态消息。

bash
$ sass --update themes:public/css
Compiled themes/light.scss to public/css/light.css.

Source Maps

兼容性:Dart Sass | since 1.3.0

源映射是一种文件,用于告诉浏览器或其他使用 CSS 的工具该 CSS 如何与生成它的 Sass 文件相对应。它们使您可以在浏览器中查看甚至编辑 Sass 文件。请参阅在 ChromeFirefox 中使用源映射的说明。

Dart Sass 默认为其发出的每个 CSS 文件生成源映射。

--no-source-map

如果传递了 --no-source-map 标志,Sass 将不会生成任何源映射。它不能与其他源映射选项一起传递。

bash
$ sass --no-source-map style.scss style.css

--source-map-urls

此选项控制 Sass 生成的源映射如何链接回生成 CSS 的 Sass 文件。Dart Sass 支持两种类型的 URL:

  • relative(默认)使用从源映射文件位置到 Sass 源文件位置的相对 URL。
  • absolute 使用 Sass 源文件的绝对 file: URL。请注意,绝对 URL 仅在编译 CSS 的同一台计算机上有效。
bash
# 生成类似以下 URL "../sass/style.scss".
$ sass --source-map-urls=relative sass/style.scss css/style.css

# 生成类似以下 URL "file:///home/style-wiz/sassy-app/sass/style.scss".
$ sass --source-map-urls=absolute sass/style.scss css/style.css

--embed-sources

此标志指示 Sass 将生成 CSS 的 Sass 文件的全部内容嵌入到源映射中。这可能会产生非常大的源映射,但它保证无论 CSS 以何种方式提供,源在任何计算机上都可用。

bash
$ sass --embed-sources sass/style.scss css.style.css

--embed-source-map

此标志告诉 Sass 将源映射文件的内容嵌入到生成的 CSS 中,而不是创建单独的文件并从 CSS 链接到它。

bash
$ sass --embed-source-map sass/style.scss css.style.css

Other Options

--watch

兼容性:Dart Sass | since 1.6.0

此标志(缩写为 -w)的作用类似于 --update 标志,但在第一轮编译完成后,Sass 保持打开状态,并在样式表或其依赖项发生变化时继续编译样式表。

Sass 仅监视您在命令行上按原样传递的目录、您在命令行上传递的文件名的父目录以及加载路径。它不会根据文件的 @import/@use/@forward 规则监视其他目录。

bash
$ sass --watch themes:public/css
Compiled themes/light.scss to public/css/light.css.

# Then when you edit themes/dark.scss...
Compiled themes/dark.scss to public/css/dark.css.

--poll

兼容性:Dart Sass | since 1.8.0

此标志只能与 --watch 一起传递,它告诉 Sass 每隔一段时间手动检查源文件的更改,而不是依靠操作系统在发生更改时通知它。如果您在操作系统的通知系统不起作用的远程驱动器上编辑 Sass,则可能需要这样做。

bash
$ sass --watch --poll themes:public/css
Compiled themes/light.scss to public/css/light.css.

# 然后当您编辑主题/dark.scss时...
Compiled themes/dark.scss to public/css/dark.css.

--stop-on-error

兼容性:Dart Sass | since 1.8.0

此标志指示 Sass 在检测到错误时立即停止编译,而不是尝试编译可能不包含错误的其他 Sass 文件。它在 多对多模式 中最有用。

bash
$ sass --stop-on-error themes:public/css
Error: Expected expression.
42 h1 {font-face: }
                ^
  themes/light.scss 42:16  root stylesheet

--interactive

兼容性:Dart Sass | since 1.5.0

此标志(缩写为 -i)指示 Sass 以交互模式运行,您可以在其中编写 SassScript 表达式 并查看其结果。交互模式还支持 变量@use 规则

bash
$ sass --interactive
>> 1px + 1in
97px
>> @use "sass:map"
>> $map: ("width": 100px, "height": 70px)
("width": 100px, "height": 70px)
>> map.get($map, "width")
100px

--color

此标志(缩写为 -c)指示 Sass 发出 终端颜色,而反向的 --no-color 指示它不发出颜色。默认情况下,如果它看起来像是在支持颜色的终端上运行,它将发出颜色。

bash
$ sass --color style.scss style.css
Error: Incompatible units em and px.
1 $width: 15px + 2em
         ^^^^^^^^^^
  style.scss 1:9  root stylesheet

$ sass --no-color style.scss style.css
Error: Incompatible units em and px.
1 $width: 15px + 2em
         ^^^^^^^^^^
  style.scss 1:9  root stylesheet

--no-unicode

兼容性:Dart Sass | since 1.17.0

此标志指示 Sass 仅将 ASCII 字符作为错误消息的一部分发送到终端。默认情况下,或者如果传递了 --unicode,Sass 将为这些消息发出非 ASCII 字符。此标志不会影响 CSS 输出。

bash
$ sass --no-unicode style.scss style.css
Error: Incompatible units em and px.
  ,
1 | $width: 15px + 2em;
  |         ^^^^^^^^^^
  '
  test.scss 1:9  root stylesheet

$ sass --unicode style.scss style.css
Error: Incompatible units em and px.
1 │ $width: 15px + 2em;
  │         ^^^^^^^^^^
  test.scss 1:9  root stylesheet

--quiet

此标志(缩写为 -q)指示 Sass 在编译时不要发出任何警告。默认情况下,当使用弃用的功能或遇到 @warn 规则 时,Sass 会发出警告。它还会使 @debug 规则 静音。

bash
$ sass --quiet style.scss style.css

--quiet-deps

此标志指示 Sass 不要发出来自依赖项的弃用警告。它将通过 加载路径 间接导入的任何文件视为“依赖项”。此标志不会影响 @warn 规则@debug 规则

bash
$ sass --load-path=node_modules --quiet-deps style.scss style.css

--fatal-deprecation

兼容性:Dart Sass | since 1.59.0

此选项告诉 Sass 将特定类型的弃用警告视为错误。例如,此命令告诉 Sass 将 /-as-division 的弃用警告视为错误:

bash
$ sass --fatal-deprecation=slash-div style.scss style.css
Error: Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div(4, 2) or calc(4 / 2)

更多信息和自动迁移器:https://sass-lang.com/d/slash-div

这只是一个错误,因为您已将 slash-div 弃用设置为致命错误。
如果您需要继续使用此功能,请删除此设置。
1 a { b: (4/2); }
         ^^^
  style.scss 1:9  root stylesheet

以下弃用 ID 可以传递给此选项:

IDVersionDescription
call-string0.0.0Passing a string directly to meta.call().
elseif1.3.2Using @elseif instead of @else if.
moz-document1.7.2Using @-moz-document (except for the empty url prefix hack).
new-global1.17.2Declaring new variables with !global.
color-module-compat1.23.0Using color module functions in place of plain CSS functions.
slash-div1.33.0Using the / operator for division.
bogus-combinators1.54.0Leading, trailing, and repeated combinators.
strict-unary1.55.0Ambiguous + and - operators.
function-units1.56.0Passing invalid units to built-in functions.
duplicate-var-flags1.62.0Using multiple copies of !global or !default in a single variable declaration.

或者,您可以传递 Dart Sass 版本,以将该版本中存在的所有弃用视为错误。例如,--fatal-deprecation=1.33.0 会将上表中所有弃用(包括 slash-div)视为错误,但将任何较新的弃用保留为警告。

--trace

此标志指示 Sass 在遇到错误时打印完整的 Dart 或 JavaScript 堆栈跟踪。Sass 团队使用它来调试错误。

bash
$ sass --trace style.scss style.css
Error: Expected expression.
42 h1 {font-face: }
                ^
  themes/light.scss 42:16  root stylesheet

package:sass/src/visitor/evaluate.dart 1846:7                        _EvaluateVisitor._addExceptionSpan
package:sass/src/visitor/evaluate.dart 1128:12                       _EvaluateVisitor.visitBinaryOperationExpression
package:sass/src/ast/sass/expression/binary_operation.dart 39:15     BinaryOperationExpression.accept
package:sass/src/visitor/evaluate.dart 1097:25                       _EvaluateVisitor.visitVariableDeclaration
package:sass/src/ast/sass/statement/variable_declaration.dart 50:15  VariableDeclaration.accept
package:sass/src/visitor/evaluate.dart 335:13                        _EvaluateVisitor.visitStylesheet
package:sass/src/visitor/evaluate.dart 323:5                         _EvaluateVisitor.run
package:sass/src/visitor/evaluate.dart 81:10                         evaluate
package:sass/src/executable/compile_stylesheet.dart 59:9             compileStylesheet
package:sass/src/executable.dart 62:15                               main

--help

此标志(缩写为“-h”)打印此文档的摘要。

bash
$ sass --help
Compile Sass to CSS.

Usage: sass <input.scss> [output.css]
       sass <input.scss>:<output.css> <input/>:<output/>

...

--version

此标志打印 Sass 的当前版本。

$ sass --version
1.62.1