93 - 《Bigfish 4 特性 05:稳定白盒性能好的 ESLint》
发布于 2022年4月7日
4 月会更新 20 篇 Bigfish 4(含 Umi 4)的新特性,这是第五篇。
ESLint 大家都很熟,通过很多规则,让大家写更好的代码,而且部分规则还能自动修复。Bigfish 3 也有 lint 命令,包含 eslint、prettier、stylelint 等。Lint 虽然不是卡点,但大家在这块遇到问题的比较多,同时带来了不少咨询量。
问题主要集中在这些方面,
1、规则开太多,有些规则见仁见智,不同人有不同的想法
2、依赖不稳定,睡一觉醒来规则变了,CI 过不了影响发布节奏
3、太黑盒,不知道开了什么规则,甚至框架(Bigfish)层自己都不敢更新依赖
4、性能不好,影响提交和 CI 速度
以上问题,Umi 4 的 Lint 方案全解。
规则开太多是因为 Bigfish 3 对于 ESLint 的定位不清晰。ESLint 的规则分质量类、建议类和风格类。比如使用未定义的变量是质量类,比如语句后加不加逗号则是风格类。在拥有 prettier 之后,Bigfish 4 的方案里,风格类的全交给 prettier,ESLint 则只负责可能导致问题的质量类。经过筛选,Bigfish 4 开的规则仅 60 多条。
依赖不稳定是 ESLint 的设计缺陷。ESLint 生态包含 config 和 plugin,plugin 实现规则,config 决定规则的开启或关闭。这理应是不错的设计,但可惜 ESLint 只考虑了项目级如何使用,却没有考虑三方库封装 config 和 plugin 的场景。具体的问题是 ES