sublime text 本身不支持实时编译,必须用终端运行 sass --watch src/scss:dist/css 才能递归监听所有 @use/@import 子文件变更;插件仅监听当前激活 tab,且不报错、不兼容新语法,90% 的“无反应”源于 sublime 启动时找不到 sass 命令。

Sublime Text 本身不支持实时编译,所谓“保存即编译”只是单次调用 sass 命令;真要监听 @use、@import 子文件变更并自动重编译,必须用 sass --watch 在终端独立运行——插件做不到这点。
为什么保存 .scss 文件没反应,控制台也不报错
90% 是 Sublime 启动时根本找不到 sass 命令。它不继承终端的 $PATH,哪怕你在 iTerm 里 sass --version 跑得飞起,Sublime 也当它不存在。
- macOS/Linux:终端执行
which sass,拿到类似/opt/homebrew/bin/sass的绝对路径 - Windows:运行
where sass,常见结果是C:\Users\Alice\AppData\Roaming\npm\sass.cmd - 关掉 Sublime,**从 Dock 或开始菜单重新启动**(否则旧环境变量还在缓存里)
- 若用
nvm,确保当前 Node 版本已全局安装:运行nvm use 20 && npm install -g sass
别信插件能自动感知子文件变更
所有 Sublime 插件(LiveSassCompiler、EasyLess、SCSS)都只监听当前激活的 tab。改了 _variables.scss,但没切回 main.scss 保存,CSS 就不会更新——这不是 bug,是设计限制。
-
sass --watch src/scss:dist/css才会递归监听整个目录树,包括所有被@use或@import引入的文件 - 插件里配的
output_dir或include_paths对--watch模式完全无效 - 插件连
@use "utils"找不到路径时都静默失败,不报错也不生成 CSS
用 SublimeOnSaveBuild + 自定义 .sublime-build 最可控
比封装过深的插件更透明、错误可见、新语法全支持,尤其对 @use、@forward 这类 Dart Sass 新特性。
- 先装插件:
Ctrl+Shift+P→ 输入Package Control: Install Package→ 搜SublimeOnSaveBuild安装 - 新建构建系统:
Tools → Build System → New Build System…,贴入:
{
"cmd": ["sass", "--no-source-map", "$file", "${file_path}/${file_base_name}.css"],
"selector": "source.scss, source.sass",
"file_regex": "^(*?):([0-9]+):([0-9]+)"
}
-
--no-source-map必须加,否则构建可能卡住;如需 sourcemap,改用--sourcemap=inline -
${file_path}/${file_base_name}.css是动态输出路径,避免多文件互相覆盖 - 确保
selector是source.scss, source.sass,否则保存时不会触发
真正复杂的地方不在配置本身,而在路径和环境隔离:图形界面启动的 Sublime 不读 shell 配置,nvm 切换版本后全局命令可能失效,项目路径含中文或空格会导致静默失败——这些细节不验证,再好的配置也白搭。











