如何让Prettier与ESLint在大括号风格和缩进规则上协同工作?
解决Prettier与ESLint的类声明格式冲突问题
结论
得改ESLint配置来适配Prettier自动生成的格式——毕竟Prettier是按你设的printWidth(64字符)触发的合理换行,问题出在ESLint当前规则没兼容这种场景。
具体修改方法
1. 修复缩进报错
ESLint的indent规则默认没处理类实现接口换行后的缩进逻辑,给它加个配置就能解决:
修改.eslintrc.json里的indent规则:
"indent": ["error", 2, { "SwitchCase": 1, "ClassDeclaration": { "implements": 1 } }]
这个配置会让ESLint允许implements行缩进2空格,和Prettier的格式对齐。
2. 修复大括号风格报错
你当前brace-style设的是1tbs,要求大括号必须和类声明同行,但Prettier换行后会把大括号单独放一行。给brace-style加个选项允许这种情况:
"brace-style": ["error", "1tbs", { "allowMultiline": true }]
更省心的方案(推荐)
直接用eslint-config-prettier自动禁用所有和Prettier冲突的ESLint规则:
- 装依赖:
npm install eslint-config-prettier --save-dev - 在
.eslintrc.json的extends里加一行:
"extends": [ // 保留你原来的extends配置,比如"eslint:recommended"之类的 "prettier" ]
这样就不用手动调每一条冲突规则了,一劳永逸。
额外说明
别改Prettier的配置,它的换行是按你设定的printWidth逻辑来的,属于正常格式化。ESLint的职责是检查代码质量,风格层面应该适配Prettier的输出,而不是反过来限制Prettier的格式化行为。
内容的提问来源于stack exchange,提问作者Lance Pollard
相关产品推荐
相关产品推荐

