必须在项目根目录的 .vscode/settings.json 中配置 "[prisma]": {"editor.formatOnSave": true, "editor.defaultFormatter": "Prisma.prisma"},否则即使安装 Prisma 插件,保存时也不会格式化 schema.prisma 文件。

schema.prisma 文件保存时不格式化,不是插件没装,而是 VSCode 根本没把它当“可格式化的语言”来对待——Prisma 扩展自带格式器,但默认不接管保存逻辑。
为什么装了 Prisma 插件却没反应
VSCode 对 javascript、typescript 等语言默认启用 editor.formatOnSave,但对 prisma 语言不会自动开启。即使语法高亮正常、右下角显示 “Prisma”,只要没在 settings.json 里显式声明 [prisma] 语言块,格式化就永远不会触发。
-
files.associations只负责语言识别(比如把schema.prisma当作 prisma),不激活格式化链路 -
Prettier、ESLint等通用工具完全不认识.prisma语法,配了也无效 - 错误写法:
"[*.prisma]"、"[schema.prisma]"、"prisma"—— 必须是带中括号的"[prisma]",且大小写严格匹配
必须加的项目级配置项
在项目根目录的 .vscode/settings.json 中添加以下内容(不是用户级 settings):
{
"[prisma]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "Prisma.prisma"
}
}
-
"Prisma.prisma"是官方扩展唯一有效的 formatter ID,写成prisma或prisma.prisma都会报No formatter installed for 'prisma' - 多根工作区下,该配置必须放在最外层
.vscode/settings.json,子文件夹里的不生效 - Windows 中文路径可能导致静默失败,建议移到英文路径或改用 WSL
验证是否真生效
改完配置后,打开 prisma/schema.prisma,手动破坏格式再保存:
- 把
model User {缩进改成 4 空格 → 保存后应立刻变回 2 空格,字段对齐,关系字段换行 - 右下角语言模式必须是
Prisma(不是Plain Text或JSON) - 若仍无反应,检查 Prisma 扩展版本是否 ≥
v5.15.0;旧版本不支持该 formatter ID
真正容易被忽略的是:Prisma 的格式规则是硬编码在扩展里的,它不读 .prettierrc、不响应全局 editor.formatOnSave、也不认 .editorconfig —— 漏掉中括号、大小写错一个字母、或者配在了错误层级,就等于没配。


















