ESLint: la incorporación de linting multihilo mejora la velocidad hasta 3 veces en proyectos grandes
(eslint.org)Resumen clave
- ESLint v9.34.0 añade linting multihilo, lo que permite procesar varios archivos al mismo tiempo.
- El objetivo es reducir de forma significativa el tiempo de linting en codebases grandes.
- Se concreta oficialmente una función que llevaba más de 10 años preparándose.
Qué mejoró
- Aprovecha mejor los núcleos de CPU para reducir el tiempo total de lint mediante procesamiento en paralelo.
- Es especialmente efectivo en monorepos o repositorios grandes con muchos archivos.
Cómo usarlo
- En la CLI se ofrece una opción para controlar la concurrencia (cantidad de hilos), por ejemplo, una configuración relacionada con
concurrency. - Puedes ajustar el valor de concurrencia según tu proyecto o entorno de CI para encontrar el punto óptimo.
Limitaciones y precauciones
- Hay casos reportados en los que el rendimiento no alcanza lo esperado al ejecutarlo mediante algunos wrappers externos o herramientas de integración; esto varía según la combinación de entorno y herramientas.
- Como es una función reciente, se recomienda validar tanto el rendimiento como la estabilidad en CI y en local al incorporarla al flujo de lint.
Consejos de adopción
- En lugar de habilitarlo para todo el repositorio de una sola vez, conviene adoptarlo gradualmente por directorios mientras se encuentra el valor de concurrencia adecuado.
- En CI, ajusta en conjunto la caché y la estrategia de paralelización, y revisa primero las reglas o plugins con mayores cuellos de botella, como IO de archivos o tiempo de ejecución de reglas.
Comentario en una línea
- "El esperado linting en paralelo: ya es momento de buscar una mejora perceptible en el tiempo de lint de proyectos grandes."
2 comentarios
Me pregunto qué tan rápido será en comparación con Biome.
Biome sigue siendo más rápido. Pero si solo vemos la velocidad,
oxlintde VoidZero es aún más rápido.Como Biome es más cómodo en términos de usabilidad y documentación, a menos que el ESLint actual se vuelva más rápido y al mismo tiempo se estabilice con la combinación ESLint + ESLint Stylistic en lugar de ESLint + Prettier, esta optimización de multithreading es asombrosa, pero da la impresión de que algún día podría ser reemplazado.