jsprettier是sublime text 4下唯一可靠选择,因其直接调用终端prettier cli、原生支持项目级.prettierrc且专注js/ts/json;需填绝对路径prettier_cli_path、显式配置custom_file_extensions并确保语法识别正确。

别装“Prettier”插件——它已弃用多年,Sublime Text 4 下基本不工作。真正能用、且和 VS Code 行为一致的,只有 JsPrettier。
为什么 JsPrettier 是唯一靠谱选择
它不自己实现格式逻辑,而是直接调用你终端里跑的 prettier CLI,结果完全一致;只专注 JS/TS/JSON,不碰 HTML/CSS,没冗余干扰;原生支持项目级 .prettierrc,且默认向上查找一级(注意:不是工作区根目录,是文件所在目录的父级)。
其他常见插件的问题:
-
HTML-CSS-JS Prettify:JS 美化弱,对可选链、空值合并等新语法支持不稳定 -
CodeFormatter:依赖外部工具链,配置项碎,容易和prettier冲突 -
Sublime-Beautify:多数已停更,Sublime Text 4 下大概率报错或静默失败
prettier_cli_path 填不对,就等于没装
很多人配完没反应,卡在这一步。打开 Preferences → Package Settings → JsPrettier → Settings – User,必须显式填绝对路径:
- macOS(Homebrew):
"/opt/homebrew/bin/prettier"(M1/M2)或"/usr/local/bin/prettier"(Intel) - Windows:
"C:\Users\YourName\AppData\Roaming\npm\prettier.cmd"(注意双反斜杠) - 不能写
~、不能留空、不能写null、不能用npm bin -g输出的相对路径
验证是否有效:终端执行 which prettier(macOS/Linux)或 where prettier(Windows),有输出才说明安装到位;再确认 node -v ≥ 14.0.0。
auto_format_on_save 不生效?先看这三处
Ctrl+S 没触发,90% 是被覆盖或识别错类型:
Prettier 是一款"有主见的"代码格式化工具,通过解析代码并按照统一规则重新格式化,强制执行一致的代码风格。支持 JavaScript、TypeScript、CSS、SCSS、HTML、Vue、JSON、Markdown、YAML 等多种语言。可配置为保存时自动格式化。
- 右下角状态栏必须显示
JavaScript、TypeScript或JSON,不是Plain text或JSX;按Ctrl+Shift+P输入Set Syntax: TypeScript手动切一下 - 检查
Preferences → Settings – User里有没有其他插件写的auto_format_on_save,搜出来删掉 -
custom_file_extensions必须显式列出"ts"和"tsx",否则 TS 文件不会进格式化流程
推荐最小可用配置:
{
"auto_format_on_save": true,
"custom_file_extensions": ["js", "jsx", "ts", "tsx", "json"],
"prettier_cli_path": "/opt/homebrew/bin/prettier",
"node_path": "/opt/homebrew/bin/node"
}
TS/HTML 格式乱?不是插件问题,是 prettier 版本或选项没对
TS 报 Prettier: Invalid parser?说明 prettier 版本太低 —— v2.8.0 以前不认 .ts,升级:npm install -g prettier@latest。
HTML 格式后空白行/缩进错乱?prettier v3+ 默认禁用 htmlWhitespaceSensitivity 自动推断,必须显式设:
-
"html_whitespace_sensitivity": "css"(推荐,行为接近浏览器渲染) -
"html_whitespace_sensitivity": "strict"(保留所有空白,适合模板字符串内嵌 HTML)
Vue 文件要生效?加 "additional_extensions": ["vue"],但别指望它处理 <script setup></script> 里的 TS 类型推导 —— 那得靠语言服务器,不是格式化器管的事。
最易被忽略的点:项目级 .prettierrc 必须放在文件所在目录的**上一级目录**,不是 Sublime 工作区根目录;而且它只在 auto_format_on_save 开启时生效,手动触发 Ctrl+Alt+F 会跳过该文件读取。










