Prettier 和 ESLint 冲突了怎么办?

司马雨帆 阅读 26

我刚在项目里同时配了 Prettier 和 ESLint,结果保存代码时格式老是打架。比如 ESLint 要求分号结尾,Prettier 却自动删掉,改完一保存又变回去了,烦死了。

我试过装 eslint-config-prettiereslint-plugin-prettier,也按网上教程改了配置,但还是不行。这是我的 .eslintrc.cjs:

module.exports = {
  extends: ['eslint:recommended', 'plugin:prettier/recommended'],
  rules: {
    'prettier/prettier': 'error',
    'semi': ['error', 'always']
  }
};
我来解答 赞 8 收藏
二维码
手机扫码查看
1 条解答
爱学习的诗诗
你这配置问题出在 ESLint 的 semi 规则和 Prettier 的冲突了,plugin:prettier/recommended 本身已经集成了 eslint-config-prettier,会自动关闭所有和 Prettier 冲突的 ESLint 格式规则,但你又手动加了 'semi': ['error', 'always'],等于跟 Prettier 打架。

直接用这个配置改掉:

module.exports = {
extends: ['eslint:recommended', 'plugin:prettier/recommended'],
rules: {
// 别再写 semi 这种规则了,Prettier 说了算
}
};


然后确保你用的 Prettier 版本是 2.x(现在基本都 2.x 了),再检查下有没有 .prettierrcprettier 字段在 package.json 里,比如:

{
"semi": false,
"singleQuote": true,
"trailingComma": "all"
}


如果项目里用了 .editorconfig,也顺手删掉缩进相关的配置,别让三个人抢着管格式。

最后一步,重启 VS Code(或者你用的编辑器),别光保存,有些插件缓存没清干净会继续乱来。

搞定后,你改代码保存一次,再看是不是不再反复横跳了。
点赞 3
2026-02-25 04:02