ESLint vs Prettier:2024年代码格式化工具怎么选?
2024年,一个前端开发者平均每天要处理3000行代码。其中至少200次是手动调整缩进、删除多余空格、或者把单引号改成双引号。这些琐事占用了15%的编码时间。
两个工具试图解决这个问题:ESLint和Prettier。但它们走的是完全不同的路。
它们不是一回事
很多人以为ESLint和Prettier是竞品。这是个误会。
ESLint诞生于2013年,核心是“代码质量检查”。它能发现你用了未定义的变量,提醒你函数太复杂,或者禁止使用eval()。它像一位严格的代码审查员。
Prettier在2017年出现,核心是“代码格式化”。它不管你的逻辑对不对,只管代码长得是否整齐。它像一位强迫症排版师。
据npm官方数据,2024年ESLint周下载量约2500万次,Prettier约1800万次。两个都在增长,但ESLint的生态更庞大。
冲突的根源
问题出在重叠区域。ESLint的规则里,有一部分也管格式化。比如缩进用几个空格、语句末尾要不要分号。Prettier也管这些。
2018年,这两个社区吵得不可开交。开发者发现,同时用ESLint和Prettier时,一个说要加空格,另一个说要删掉。
解决方案后来统一了:让ESLint只做代码质量检查,格式化交给Prettier。具体做法是关闭ESLint中所有与格式相关的规则,用eslint-config-prettier这个配置包。
据GitHub统计,这个配置包每月被引用超过500万次。说明绝大多数团队已经接受了分工。
2024年的实际情况
说几个真实场景。
如果你在用TypeScript + React,并且团队有10人以上。ESLint几乎是必须的。它能捕获any类型的滥用,能禁止未使用的import。Prettier则是锦上添花,让代码风格统一。
如果你是小团队或单人项目,只用一个也够。Prettier上手快,配置简单。ESLint配置复杂,但规则更细。
还有一个趋势:VSCode的用户直接装两个插件。ESLint插件在保存时检查错误,Prettier插件在保存时格式化。据VSCode市场数据,这两个插件的安装量都超过3000万。
性能与维护成本
ESLint的检查速度比Prettier慢。一个中等规模项目(500个文件),ESLint全量检查需要3-5秒,Prettier只需要1-2秒。
但ESLint支持增量检查,只扫描修改过的文件。实际开发中,大部分场景感觉不到延迟。
维护成本上,Prettier几乎零配置。ESLint需要团队约定规则,新人上手成本高。据Stack Overflow 2024年调查,38%的开发者认为ESLint配置“麻烦”。
到底选哪个
2024年,主流的做法是两个都用,但各司其职。
- 用ESLint检查代码质量:禁止未定义变量、限制复杂度、规范命名。
- 用Prettier格式化代码:统一缩进、分行、引号、分号。
如果你只能选一个,看你的痛点:代码风格混乱选Prettier,逻辑漏洞多选ESLint。
别纠结。这两个工具不是非此即彼,而是互补。就像刷牙和洗脸,你不需要选。