1. prettier 与 ESLint 的规则冲突(quote vs indent)治理策略;"格式化黑盒"是否可接受
prettier 与 ESLint 的规则(引号、缩进)可能冲突。如何治理规则冲突?"格式化黑盒"(把格式化交给工具)是否可接受?
- prettier 与 ESLint 的职责边界
- 规则冲突的治理(由 prettier 负责格式化,ESLint 关闭格式规则)
- "格式化黑盒"的取舍
(1)职责边界:prettier 负责"格式化"(缩进、引号、换行、分号),ESLint 负责"代码质量"(未使用变量、no-eval、复杂度过高)。二者领域不同,但历史上会重叠(ESLint 的 quote/indent 规则)。 (2)冲突治理:用 eslint-config-prettier 关闭 ESLint 中与 prettier 冲突的格式规则(quote、indent、semi 等),让 prettier 成为"格式唯一权威",ESLint 只管质量。这样避免两个工具对同一段代码给相反意见。 (3)"格式化黑盒"是否可接受:可接受。理由:a) 格式化是机械性的,交给工具消除风格争论,让团队聚焦逻辑;b) prettier 输出稳定、无倾向,作为"黑盒"反而减少个人偏好;c) 统一自动格式化后,diff 更干净。代价是某些格式化决策(如换行细节)不可自定义,但多数团队可接受。 (4)落地:pre-commit 用 husky + lint-staged 自动跑 prettier;CI 用 prettier --check 拦截未格式化代码;ESLint 质量规则正常生效。
治理核心是"让 prettier 管格式、ESLint 管质量",用 eslint-config-prettier 消除冲突。格式化黑盒可接受,因为它消除争论、提供稳定输出,团队把认知用在逻辑上。关键是"工具强制 + 统一提交"。
// 依赖
"eslint-config-prettier"
// .eslintrc
{ "extends": ["plugin:prettier/recommended"] }
// 关闭格式规则,prettier 权威