重大变化:媒体查询级别 4
Sass 添加了对 CSS Media Queries Level 4 规范的支持。这最初与一些 Sass 特定的语法相冲突,因此该语法已被弃用,现在根据 CSS 标准进行解释。
- Dart Sass
- since 1.56.0
- LibSass
- ✗
- Ruby Sass
- ✗
由于 Sass 支持带括号的媒体条件中的几乎所有 Sass 表达式,因此通过添加对媒体查询级别 4 的完全支持,有一些结构的含义发生了变化。具体来说:
¥Because Sass supports almost any Sass expression in parenthesized media conditions, there were a few constructs whose meaning was changed by adding full support for Media Queries Level 4. Specifically:
-
@media (not (foo))
历史上被 Sass 解释为@media (#{not (foo)})
,因此编译为@media (false)
。¥
@media (not (foo))
was historically interpreted by Sass as meaning@media (#{not (foo)})
, and so compiled to@media (false)
. -
@media ((foo) and (bar))
和@media ((foo) or (bar))
类似地被解释为 SassScript 的逻辑运算符,分别编译为@media (bar)
和@media (foo)
。¥
@media ((foo) and (bar))
and@media ((foo) or (bar))
were similarly interpreted as SassScript’s logical operators, compiling to@media (bar)
and@media (foo)
respectively.
幸运的是,这些在实践中很少出现。
¥Fortunately, these came up very infrequently in practice.
过渡期过渡期 permalink
¥Transition Period
- Dart Sass
- since 1.54.0
- LibSass
- ✗
- Ruby Sass
- ✗
首先,我们对之前不明确的情况发出了弃用警告。这些将提供有关如何保留现有行为或如何使用新 CSS 语法的建议。
¥First, we emitted deprecation warnings for the previous ambiguous cases. These will have suggestions for how to preserve the existing behavior or how to use the new CSS syntax.
Can I Silence the Warnings?Can I Silence the Warnings? permalink
Sass provides a powerful suite of options for managing which deprecation warnings you see and when.
Terse and Verbose ModeTerse and Verbose Mode permalink
By default, Sass runs in terse mode, where it will only print each type of deprecation warning five times before it silences additional warnings. This helps ensure that users know when they need to be aware of an upcoming breaking change without creating an overwhelming amount of console noise.
If you run Sass in verbose mode instead, it will print every deprecation
warning it encounters. This can be useful for tracking the remaining work to be
done when fixing deprecations. You can enable verbose mode using
the --verbose
flag on the command line, or
the verbose
option in the JavaScript API.
⚠️ Heads up!
When running from the JS API, Sass doesn’t share any information across
compilations, so by default it’ll print five warnings for each stylesheet
that’s compiled. However, you can fix this by writing (or asking the author of
your favorite framework’s Sass plugin to write) a custom Logger
that only
prints five errors per deprecation and can be shared across multiple compilations.
Silencing Deprecations in DependenciesSilencing Deprecations in Dependencies permalink
Sometimes, your dependencies have deprecation warnings that you can’t do
anything about. You can silence deprecation warnings from dependencies while
still printing them for your app using
the --quiet-deps
flag on the command line, or
the quietDeps
option in the JavaScript API.
For the purposes of this flag, a "dependency" is any stylesheet that’s not just a series of relative loads from the entrypoint stylesheet. This means anything that comes from a load path, and most stylesheets loaded through custom importers.
Silencing Specific DeprecationsSilencing Specific Deprecations permalink
If you know that one particular deprecation isn’t a problem for you, you can
silence warnings for that specific deprecation using
the --silence-deprecation
flag on the command line, or
the silenceDeprecations
option in the JavaScript API.