sublime text构建系统仅调用系统命令,不自动安装工具;90%失败源于终端未验证命令、path未生效或语法scope未正确设置。

Sublime Text 的构建系统(Build System)本身不运行任何工具,它只是把命令交给操作系统去执行。能不能调用成功,取决于你本地是否装了对应工具、PATH 是否生效、以及配置里有没有写错路径或参数。
确认终端能跑通命令再配 Sublime
这是最常被跳过的一步,也是 90% 构建失败的根源。Sublime 的构建系统不会帮你装 python、g++、bazel 或 rollup,它只负责调用。
- 先在终端(不是 Sublime 控制台)里运行
python --version、g++ --version或bazel version,确保返回正常结果 - 如果报
command not found,说明工具没装,或 PATH 没配对——Sublime GUI 启动时通常不加载~/.zshrc或~/.bash_profile,得手动补全路径或改用登录 shell - Windows 用户注意:MinGW 的
g++.exe必须在 PATH 中,且路径不能含空格或中文;若用 scoop 安装,路径通常是C:\Users\xxx\scoop\shims
构建系统文件必须放在 Packages/User/ 目录下
Sublime 只从固定位置读取 .sublime-build 文件,放错地方就等于没配。
- macOS:菜单
Sublime Text → Preferences → Browse Packages…,进User/文件夹 - Windows:菜单
Preferences → Browse Packages…,同样打开User/ - Linux:
~/.config/sublime-text-3/Packages/User/(注意版本号可能是sublime-text或sublime-text-4) - 文件名随意,但后缀必须是
.sublime-build,比如Python3.sublime-build或Bazel.sublime-build
cmd 数组比 shell_cmd 更可靠
shell_cmd 在跨平台时容易出问题,尤其涉及管道、重定向或空格路径;cmd 是字符串数组,由 Sublime 直接传给系统调用,更可控。
- 推荐写法:
"cmd": ["node", "index.js"],而不是"shell_cmd": "node index.js" - 变量如
$file、$project_path只在文件已保存时才有效;未保存的临时文件会变成空字符串 - 若需指定工作目录,用
"working_dir": "$project_path"—— 这个变量只在你通过File → Open Folder打开整个项目时才有值;单文件打开则为空 - Windows 下调用批处理或 PowerShell 脚本时,
shell_cmd可能更方便,但务必加"shell": true
构建系统触发依赖右下角 syntax scope
Sublime 不是靠文件扩展名决定用哪个构建系统,而是看当前文件右下角显示的语法类型(syntax scope),比如 source.python、source.c++。
- 新建一个
.py文件,默认可能是Plain Text,得先点击右下角 →Set Syntax → Python,否则"selector": "source.python"不生效 - 自定义构建系统里加
"selector": "source.ts",就只在 TypeScript 文件中自动激活;不加 selector,则所有文件都能用 Ctrl+B 触发(但可能报错) - BUILD 和 WORKSPACE 文件需先装
Bazel Syntax Highlighting插件,并手动设为Bazel语法,否则构建系统无法按 scope 绑定
真正麻烦的从来不是写 JSON,而是环境变量、路径解析和 scope 匹配这三处——它们不出错时一切丝滑,一出错就静默失败,连错误信息都不吐。多花两分钟在终端里验证命令,比在 Sublime 里反复试 build 配置要快得多。











