Español
enforce-consistent-important-position
Regla de oxlint que pone el modificador important de Tailwind CSS en una sola posición — sufijo flex! (la forma de v4) o prefijo !flex — y corrige el resto.
De un vistazo
| Autofix | Sugerencias en el editor | Design system | Opciones |
|---|---|---|---|
| Sí | Sí | No se usa | position |
Qué hace esta regla
Tailwind v4 soporta dos sintaxis para el modificador !important: prefijo (!flex, la forma de la era v3) y sufijo (flex!, la forma canónica de v4). Las dos producen el mismo CSS, pero mezclarlas dentro de un proyecto deja el codebase inconsistente y rompe el copy-paste entre archivos. Esta regla elige una posición y reescribe cada ofensor para que coincida. Autofix sobre el primer hit por location, sugerencia de editor sobre los siguientes.
DS-independiente — funciona sin settings.tailwindcss.entryPoint. Es una transformación de string pura, así que corre en todos lados, incluyendo proyectos que todavía no cablearon el design system.
Opciones
position
'prefix' | 'suffix', default 'suffix'.
'suffix' es la forma canónica de Tailwind v4 (flex!, hover:text-red!), así que es la elección recomendada para proyectos nuevos. 'prefix' mantiene la forma de v3 (!flex, hover:!text-red) — elígela solo si tu codebase todavía está en la grafía de v3 y no quieres migrar todavía.
jsonc
{ "tailwindcss/enforce-consistent-important-position": ["error", { "position": "suffix" }] }Nota: enforce-canonical preserva la posición del ! que escribiste (no la normaliza), así que cualquier valor de position compone con él sin problemas. Esta regla es la única fuente de verdad para la posición del !.
Ejemplos
✗ Incorrecto
tsx
// Default suffix: el prefijo se reporta
<div className="!font-bold" />
// ~~~~~~~~~~ → font-bold!
// Lo mismo con cadena de variants
<div className="hover:!text-red" />
// ~~~~~~~~~~~~~~~ → hover:text-red!
// Varios ofensores en un mismo string
<div className="!font-bold !text-red" />
// ~~~~~~~~~~ ~~~~~~~~~ → font-bold! text-red!✓ Correcto
tsx
// Default (suffix)
<div className="font-bold!" />
<div className="hover:text-red!" />
<div className="font-bold! text-red!" />
// Sin important — la regla no toca clases normales
<div className="flex items-center" />Interacciones con otras reglas
enforce-canonical: preserva la posición del!que escribiste (prefijo, sufijo o ninguno) en vez de normalizarla, así que nunca se pelea con esta regla sin importar elpositionque elijas. Esta regla es la única fuente de verdad para la posición del!.enforce-sort-order: independiente de la posición del important. Tanto la forma prefijo como la sufijo ordenan igual.no-unknown-classes: hace lookup de la utility bare, sacando!de cualquier lado, así que ninguna forma la dispara.
Cuándo desactivarla
- El codebase mezcla las dos formas a propósito (e.g. archivos legacy de v3 conviviendo con archivos frescos de v4 durante una migración). Reactívala cuando termine la migración.
- No te importa la consistencia de la posición del
!. Ninguna otra regla la impone —enforce-canonicalpreserva la posición que hayas escrito — así que desactivar esta deja la posición del!sin chequear.