Parser 入口 · 源码进,源码出
先确认语法,再格式化代码。
SCSS、缩进式 Sass 和标准 CSS 彼此相关,却不是同一种语法。只有先选对解析器,格式化工具才不会把合法的 SassScript 当成错误 CSS。
SCSS
本工具适用花括号语法 · .scss
$gap: 1rem;
.card { padding: $gap * 2; }Sass
请选择 Sass 解析器缩进语法 · .sass
$gap: 1rem .card padding: $gap * 2
CSS
不支持 SassScript浏览器样式表
.card {
padding: 2rem;
}SCSS 语法样本
这些 SCSS 特性,parser 必须真的认识
它们不是装饰性的写法,而是决定解析语法的有效 token。用普通 CSS 解析器处理时,很可能会把正确的 SCSS 误判为异常。
$brand: #c3caed;可复用的 SassScript 变量PASS// 仅供源码维护的说明标准 CSS 不接受的注释形式PASS@use "tokens" as t;带命名空间的模块成员PASS.icon-#{$size}动态生成选择器或属性文本PASS@include stack($gap);复用源码级规则PASS&:hover { color: $brand; }父选择器和嵌套规则PASS格式化 ≠ 编译
格式化之后,源语言仍然是 SCSS。
空格、缩进和换行会变得稳定;SassScript 不会执行,项目中的依赖文件也不会被解析。
会做 · 格式化
$gap:1rem;.card{padding:$gap*2}
↓ FORMAT
$gap: 1rem;
.card {
padding: $gap * 2;
}- 使用 SCSS 语法解析源码
- 统一空格、缩进和换行
- 返回可读的 .scss 源码
不会做 · 编译
NO CSS EMISSION
- 解析 @use 或 @forward 文件路径
- 计算变量、函数或循环
- 输出浏览器可执行的 CSS
Parser 错误诊室
准确的行列位置,比一个模糊红框更有用。
真正的解析器会指出破坏语法的 token。应先修复这个边界,后续错误往往只是连锁症状。
10 .grid {
11 gap: $gap + 1rem;
12 width: 100% + ;
^
13 }+ 运算符后缺少值。请删除多余的运算符,或补上缺失的 SassScript 操作数。
各环境保持一致
让浏览器、编辑器和 CI 使用同一套解析器体系。
浏览器
快速本地整理并查看解析器诊断
Prettier SCSS parser
当前页面明确选择的语法
编辑器
按仓库配置在保存时格式化
CI
prettier --check "**/*.scss"