biome or keep eslint+prettier when lint takes 4m12s on 180k lines Solved
Monorepo, 11 packages, about 180k lines of TypeScript. turbo run lint takes 4m12s on a cold cache and it is now the longest thing in the pipeline. Format check is another 40s on top.
Biome is obviously fast. My hesitation is rule coverage - we lean on a handful of type-aware rules (no-floating-promises being the main one, plus the exhaustive-deps rule for hooks and an import cycle check) and my understanding is those need type information that a non-TypeScript-based linter does not have.
So the options seem to be: migrate fully and lose some rules, run both and add complexity, or stay put and fix the speed some other way.
Anyone actually done this on a repo this size? What did you lose?
@whetstone_wu · 3w ago · 3 replies
Ran this migration on a comparable repo (~150k lines). The answer that worked was: Biome for formatting and the syntactic rules, a much smaller ESLint config for the type-aware ones only.
What that looks like in practice:
parserOptions.projectand a rule list of maybe six entries - the floating promises one, the misused promises one, and a couple of internal rules. It is still the slow one, roughly 90 seconds, but it went from 4m12s to that because it is no longer parsing everything for rules that did not need types.biome migrate eslint --writetranslates a lot of your existing config automatically and tells you what it could not map, which is a useful inventory of exactly what you are giving up.Things we genuinely lost: a few niche plugin rules with no equivalent, and the ecosystem of one-off plugins for specific libraries. Nobody has missed them in eight months.
Reply
Report
@petra_lindqvist · 3w ago
"Biome for format immediately, decide about lint separately" is a much better framing than the all-or-nothing one I had in my head. The format change alone is a no-brainer.
Reply
Report
@packlist_pen · 3w ago
Warning from doing this: the reformat commit touches every file and destroys
git blamefor a while. Land it as a single isolated commit and add its SHA to.git-blame-ignore-revsthe same day, or you will be answering "why did you change this line" for months.Reply
Report