Español
no-deprecated-classes
Regla de oxlint que reescribe las clases de Tailwind CSS renombradas en v4, como flex-grow → grow y bg-gradient-to-r → bg-linear-to-r, con autofix.
De un vistazo
| Autofix | Sugerencias en el editor | Design system | Opciones |
|---|---|---|---|
| Sí | Sí | Opcional — se usa si hay entryPoint | entryPoint |
Qué hace esta regla
Marca cualquier clase que fue renombrada cuando Tailwind pasó de v3 a v4 y la reescribe en el lugar con un auto-fix. Ejemplos: flex-grow → grow, flex-shrink → shrink, overflow-ellipsis → text-ellipsis, decoration-clone → box-decoration-clone, bg-gradient-to-r → bg-linear-to-r (y el resto de las direcciones de gradient). Los variants y modificadores ! (important) se preservan en ambos lados de la reescritura.
De dónde sale la lista de renombres
Con settings.tailwindcss.entryPoint (o el entryPoint propio de la regla) configurado, la lista se deriva de tu design system: se le pregunta al canonicalizeCandidates de Tailwind a qué mapea cada grafía de v3, y solo se reportan los que todavía compila Y todavía renombra. Eso cubre renombres que una tabla hardcodeada no tenía — break-words → wrap-break-word, order-none → order-0, las grafías de posición reordenadas bg-left-top → bg-top-left y object-left-top → object-top-left — y, más importante, una entrada desaparece sola cuando un Tailwind futuro deje de compilarla, en vez de sugerir un reemplazo para una clase que ya no existe.
Sin entry point la regla cae a una tabla hardcodeada con los 15 renombres más conocidos, así que sigue funcionando sin nada configurado y nunca emite un diagnóstico designSystemUnavailable.
Opciones
entryPoint
string, opcional. Un entry point CSS solo para esta regla, que pisa settings.tailwindcss.entryPoint. Se usa para derivar la lista de renombres; la regla funciona sin él.
Ejemplos
✗ Incorrecto
tsx
// Aliases de flex de v3 — v4 sacó el prefijo `flex-`
<div className="flex-grow flex-shrink-0" />
// → <div className="grow shrink-0" />
// Dirección de gradient — renombrada a bg-linear-to-*
<div className="bg-gradient-to-r from-blue-500 to-purple-500" />
// → <div className="bg-linear-to-r from-blue-500 to-purple-500" />
// Alias de text overflow y shorthand de box-decoration
<div className="overflow-ellipsis" />
// → <div className="text-ellipsis" />
<div className="decoration-clone" />
// → <div className="box-decoration-clone" />
// Variants e important se preservan en la salida
<div className="hover:!flex-grow" />
// → <div className="hover:!grow" />✓ Correcto
tsx
// Grafías post-migración
<div className="grow shrink-0" />
<div className="bg-linear-to-r from-blue-500 to-purple-500" />
<div className="text-ellipsis" />
<div className="box-decoration-clone" />
<div className="hover:!grow" />Interacciones con otras reglas
no-unknown-classes: omite silenciosamente cualquier grafía renombrada, preguntándole al design system en vez de a una lista propia, así que las dos reglas no pueden discrepar. No vas a recibir "unknown class" más "deprecated class" paraflex-grow— solo la deprecación. Mantén ambas activas.enforce-canonical: esta regla es la dueña de los renombres. Tailwind también los canonicaliza (bg-gradient-to-r→bg-linear-to-res a la vez una deprecación y una canonicalización), así que antes las dos reglas reportaban la misma clase con el mismo fix.enforce-canonicalahora se calla con todo lo que esté en la lista de renombres y mantiene el resto: formas válidas-pero-no-canónicas como-m-0→m-0ystart-2→inset-s-2(start-*es Tailwind actual, solo que no es la grafía canónica). Mantén ambas activas — con soloenforce-canonicallos renombres quedan sin reportar.no-restricted-classes: ortogonal. Esa la usas para bloquear clases válidas; esta solo se dispara con la lista fija de renombres v3→v4.
Cuándo desactivarla
- Sigues en Tailwind v3 y quieres mantener las grafías de v3. Desactiva esta regla hasta que migres.
- Mantienes a propósito una capa de clases v3-compatibles al lado de v4 (por ejemplo, una librería compartida que apunta a ambos). En ese caso prefiere un
eslint-disablepuntual en el archivo antes que un disable a nivel proyecto.