VSCode 本身不会编译 Sass,所有所谓的“自动编译”,背后都得靠外部工具或插件去调用 sass 这个命令行工具。如果连 sass 命令都没装好,那 90% 的配置都会悄无声息地失败——所以,先确认这一步能不能走通,再谈其他花活。

确认本地已安装 Dart Sass 并能被 VSCode 终端识别
这是很多人容易卡住的地方。Live Sass Compiler 插件、tasks.json、甚至某些 npm script,都需要系统 PATH 里存在 sass 命令(注意,是 Dart Sass,不是早已废弃的 node-sass)。
- 在 VSCode 终端(Terminal → New Terminal)里跑一下
sass --version;如果报command not found,说明要么没装,要么路径没生效 - 执行
npm install -g sass(推荐)或yarn global add sass;pnpm 用户要注意全局 bin 是否在$PATH里 - 安装完成后,务必重启 VSCode,否则终端可能还是找不到命令(尤其是 macOS/Linux 环境)
- 别用
node-sass:它不支持@use/@forward,而且跟新版 VSCode 的任务集成很容易出问题
用 Live Sass Compiler 插件快速启用保存即编译
这种方法适合学习、做静态页面或者小项目。插件内置了轻量级的 Dart Sass 引擎,不强制依赖全局 sass,但配置项必须写对,否则 CSS 可能跑到奇怪的地方,或者干脆不生成 map 文件。
- 安装插件:搜索
Live Sass Compiler(作者是 Ritwick Dey 或 Glenn Marks 的都可以,后者更新更勤快) - 在项目根目录创建
.vscode/settings.json,写入关键配置:"liveSassCompile.settings.formats": [{ "format": "expanded", "extensionName": ".css", "sa vePath": "/css/" }] - 必须设置
"liveSassCompile.settings.generateMap": true才会生成.css.map,否则调试时看不到原始 SCSS 的行号 - 右下角点击
Watch Sass,或者按Cmd+Shift+P→ 输入Live Sass: Watch My Sass启动监听 - 如果保存后没反应,检查一下文件编码:右下角点编码 →
Sa ve with Encoding → UTF-8(排除 BOM 的干扰)
用 tasks.json 调用 sass CLI 实现可控监听(中大型项目推荐)
这种方式比插件更透明、没有隐藏行为,对 @use 和模块系统支持得更好,以后想接入构建流程也方便。本质上就是让 VSCode 自动执行你手动敲的 sass --watch 命令。
- 在项目根目录建
.vscode/tasks.json,内容如下:{ "version": "2.0.0", "tasks": [{ "label": "sass: watch", "type": "shell", "command": "sass", "args": ["--watch", "src/scss/:dist/css/", "--style=expanded", "--source-map"], "group": "build", "isBackground": true, "problemMatcher": [] }]} src/scss/和dist/css/需要替换成你实际的源目录和输出目录;路径末尾的斜杠不能少- 按
Cmd+Shift+P→Tasks: Run Task→ 选sass: watch启动;VSCode 会常驻监听,不需要额外插件 - 如果想压缩输出,把
--style=expanded换成--style=compressed - 这种方式不支持跨工作区的别名(比如
~styles/vars.scss),路径必须写相对或绝对的真实路径
为什么改了 SCSS 但 CSS 没更新?重点排查这三处
这类问题,十有八九出在路径、编码或者监听范围上,而不是语法写错了。
sass --watch只监听你指定的目录,比如配了src/scss/,但文件实际上在assets/styles/,那自然不会触发- Live Sass Compiler 默认只处理工作区根目录下的
.scss文件,子文件夹要靠sa vePath配置去推导,别指望它自动猜 - 文件如果含 BOM 头(UTF-8 with BOM),会导致插件解析中断,保存时没提示、没输出——右下角改一下编码再试一次
- 多个入口文件(比如
a.scss、b.scss)会各自生成独立的 CSS,不会自动合并;如果需要单文件输出,得用@import或@use在主入口统一导入
真正容易被忽略的是:VSCode 的“保存即编译”从来不是魔法,它只是帮你省去手动敲命令的步骤。一旦路径写错、编码异常、或者 sass 命令根本不在环境里,整个链路就断在了第一环——盯着终端报错和右下角状态栏,比反复重装插件有用得多。