Prettier 为什么总是给我加上分号?能关掉吗?

开发者小敏 阅读 45

我最近在用 Prettier 格式化代码,但发现它老是在语句末尾自动加 ;,可我们团队的规范是不加分号的。我在配置文件里试过改 semi 选项,但好像没生效,是不是哪里写错了?

我的 .prettierrc 是这样写的:

{
  "semi": false,
  "singleQuote": true
}
我来解答 赞 9 收藏
二维码
手机扫码查看
2 条解答
西门晨曦
这个问题的关键是 Prettier 的配置文件可能没有被正确加载,或者项目中存在其他覆盖了配置的地方。让我们一步步排查。

首先确认你的 .prettierrc 文件确实放在了项目的根目录下。Prettier 会从当前文件所在位置开始向上查找配置文件,直到找到为止。如果项目中有多个 .prettierrc 文件,可能会导致意外的行为。

再来检查一下你是不是在用 VS Code 这类编辑器?有时候编辑器的 Prettier 插件可能会有自己的设置。打开 VS Code 设置(Ctrl+,),搜索 "prettier",看看里面有没有 "Semi" 相关的选项被单独设置了 true。如果有,把它改成 false 或者直接删除这一项。

说到原理,Prettier 的 semi 选项控制的就是是否自动添加分号。当设置为 false 时,它应该不会加分号。但要注意一点,如果代码里已经存在分号,Prettier 不会帮你去掉 - 它只会处理新格式化的部分。

如果你确定配置没问题,但问题依旧,试试这样:把 .prettierrc 改成 prettier.config.js 格式,内容写成这样:

module.exports = {
// 不加分号
semi: false,
// 使用单引号
singleQuote: true
}


有时候 JSON 格式的配置文件可能因为某些原因没生效,换成 JS 模块导出方式更稳妥一些。我自己也遇到过这种情况,真是折腾了半天才发现问题出在配置文件格式上。

最后提醒一句,在团队协作中,确保所有人使用的 Prettier 版本一致也很重要,不然可能会出现格式化结果不同的情况。这事儿我以前也被坑过,版本差异导致的格式化问题真够喝一壶的。
点赞
2026-03-28 04:04
程序员凌熙
配置文件本身没问题,大概率是项目里有其他 prettier 配置覆盖了你的设置。

检查一下项目根目录有没有 .prettierrc.js.prettierrc.json.prettierrc.yaml 或者 package.json 里的 prettier 字段,这些优先级都比 .prettierrc 高。

或者你直接在命令行指定:

npx prettier --write --no-semi your-file.js


如果想看当前生效的配置,运行:

npx prettier --debug-check your-file.js


能打印出当前使用的配置项。
点赞
2026-03-10 17:04