Tailwind CSS Academy · Lección

Analizar Tailwind con ESLint

Configure eslint-plugin-tailwindcss para advertir sobre nombres de clase no válidos y utilidades en conflicto, y para aplicar las convenciones de clases de su equipo.

Lección 3 de 413 pasos

Analizar Tailwind con ESLint es una lección gratuita de Tailwind CSS Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Tailwind CSS Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Tailwind CSS Academy incluye 4 lecciones en total.

Por qué aplicar lint a las clases de Tailwind

Los errores tipográficos en los nombres de clases de Tailwind son errores silenciosos: el navegador simplemente ignora las clases desconocidas sin mostrar ninguna advertencia en la consola. Una letra incorrecta, como bg-blue-50O (una O mayúscula en lugar de un cero), no aplica ningún fondo y el error puede pasar desapercibido durante días. ESLint con un plugin de Tailwind detecta estos problemas durante el desarrollo, antes de que lleguen a producción.

Instalación de eslint-plugin-tailwindcss

eslint-plugin-tailwindcss es el plugin de ESLint más utilizado para Tailwind. Valida los nombres de clase comparándolos con su configuración de Tailwind, advierte sobre utilidades en conflicto y puede hacer cumplir las convenciones de ordenación de clases de su equipo. Instálelo junto con ESLint en las dependencias de desarrollo de su proyecto.

npm install -D eslint eslint-plugin-tailwindcss

# If using a flat config (ESLint 9+)
npm install -D @eslint/js

Configuración del plugin (configuración heredada)

En el formato tradicional .eslintrc, añada tailwindcss al array de plugins y extienda la configuración recomendada. El conjunto recomendado activa las tres reglas principales: classnames-order, no-custom-classname y no-contradicting-classname.

// .eslintrc.js
module.exports = {
  extends: ['plugin:tailwindcss/recommended'],
  plugins: ['tailwindcss'],
  rules: {
    'tailwindcss/classnames-order': 'warn',
    'tailwindcss/no-custom-classname': 'warn',
    'tailwindcss/no-contradicting-classname': 'error',
  },
};

Configuración del plugin (Flat Config)

Para el nuevo formato de configuración plana de ESLint 9, importe el plugin y expanda la configuración recomendada dentro de su array de configuración. Indique en el ajuste tailwindConfig la ruta a su archivo de configuración para que el plugin lea los valores personalizados del tema y los plugins al validar los nombres de clase.

// eslint.config.js
import tailwind from 'eslint-plugin-tailwindcss';

export default [
  ...tailwind.configs['flat/recommended'],
  {
    settings: {
      tailwindcss: {
        config: './tailwind.config.js',
      },
    },
  },
];

La regla no-contradicting-classname

La regla no-contradicting-classname detecta utilidades en conflicto aplicadas al mismo elemento; por ejemplo, usar block e inline a la vez en el mismo div, o w-full y w-auto juntas sin un prefijo responsive. Estos conflictos producen resultados impredecibles que son difíciles de depurar sin ayuda del linting.

<!-- ESLint error: block and inline conflict -->
<div class="block inline text-red-500">

<!-- Correct: use responsive prefix to switch at breakpoints -->
<div class="block md:inline text-red-500">

La regla no-custom-classname

La regla no-custom-classname advierte cuando escribe una clase que no forma parte de la salida de Tailwind, ya sea una utilidad integrada o una utilidad personalizada definida en su configuración o en sus plugins. Esto ayuda a detectar errores tipográficos y evita que los desarrolladores escriban nombres de clases de CSS convencional en un proyecto de Tailwind sin seguir los procedimientos adecuados.

<!-- ESLint warning: 'card-header' is not a Tailwind utility -->
<div class="card-header p-4 bg-white">

<!-- Option 1: Use only Tailwind utilities -->
<div class="rounded-lg bg-white p-4 shadow">

<!-- Option 2: Add 'card-header' to whitelist in ESLint config -->
/* settings: { tailwindcss: { whitelist: ['card-header'] } } */

La regla classnames-order

La regla classnames-order impone el mismo orden canónico de clases que genera el plugin de Prettier. Cuando utiliza ambas herramientas, configure una de ellas como fuente de verdad para la ordenación. La mayoría de los equipos utiliza Prettier para el formateo automático y desactiva la regla de ordenación de ESLint para evitar conflictos entre ambas herramientas.

// .eslintrc.js — disable ordering rule when using Prettier plugin
module.exports = {
  extends: ['plugin:tailwindcss/recommended'],
  rules: {
    // Prettier handles ordering — disable here to avoid conflicts
    'tailwindcss/classnames-order': 'off',
    // Keep these enabled
    'tailwindcss/no-custom-classname': 'warn',
    'tailwindcss/no-contradicting-classname': 'error',
  },
};

Inclusión en la lista blanca de clases personalizadas intencionadas

Si su proyecto utiliza nombres de clases CSS personalizados junto con utilidades de Tailwind, por ejemplo, clases de una biblioteca de animaciones de terceros o de CSS heredado, añádalos al ajuste whitelist. Así se silencian los falsos positivos sin dejar de detectar errores tipográficos reales en los nombres de clases de Tailwind.

// .eslintrc.js
module.exports = {
  extends: ['plugin:tailwindcss/recommended'],
  settings: {
    tailwindcss: {
      config: './tailwind.config.js',
      // Allow these non-Tailwind class names
      whitelist: ['animate-fade-in', 'swiper-slide', 'js-modal-open'],
    },
  },
};

Ejecución de ESLint en la terminal

Añada un script lint a su package.json que incluya todos los archivos de plantillas. Ejecútelo localmente y en CI para detectar errores en los nombres de clase antes de integrarlos. La opción --fix corrige automáticamente los problemas de ordenación, pero no puede corregir errores tipográficos; esos requieren una revisión manual.

// package.json
{
  "scripts": {
    "lint": "eslint 'src/**/*.{js,jsx,ts,tsx,html}'",
    "lint:fix": "eslint --fix 'src/**/*.{js,jsx,ts,tsx,html}'"
  }
}

Integración con el editor para obtener comentarios en tiempo real

Instale la extensión de ESLint para VS Code para ver los errores subrayados directamente en el editor mientras escribe. Los errores en las clases de Tailwind aparecen como advertencias amarillas o errores rojos en línea, por lo que es imposible pasar por alto un error tipográfico. Combine esta extensión con Tailwind CSS IntelliSense para obtener autocompletado y cerrar por completo el ciclo de retroalimentación del linting.

// .vscode/extensions.json — recommended extensions for the team
{
  "recommendations": [
    "dbaeumer.vscode-eslint",
    "esbenp.prettier-vscode",
    "bradlc.vscode-tailwindcss"
  ]
}

Combinación eficaz de ESLint y Prettier

Utilice ESLint para la validación: detectar errores tipográficos, contradicciones y nombres de clase desconocidos. Utilice Prettier para el formateo: ordenar las clases según el orden canónico. Desactive la regla de ESLint classnames-order para que Prettier se encargue exclusivamente de la ordenación. Esta separación de responsabilidades le permite aprovechar ambas herramientas sin conflictos.

// Recommended combined setup
// ESLint: validates correctness
// Prettier: formats order

// package.json scripts
"lint": "eslint src/",
"format": "prettier --write src/",
"precommit": "npm run lint && npm run format"

Comprobación rápida

Compruebe su comprensión de los conceptos de Tailwind CSS Mastery de esta lección.

Resumen de la lección

En esta lección ha aprendido a: instalar eslint-plugin-tailwindcss para detectar errores tipográficos y contradicciones, conocer las tres reglas principales (no-contradicting-classname, no-custom-classname, classnames-order) y combinar ESLint con Prettier para que cada herramienta se encargue de su responsabilidad. A continuación, definiremos las convenciones del equipo y una guía de estilo.

Gratis para empezar

Aprende HTML con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
30
Lecciones
120

Preguntas frecuentes

¿La lección «Analizar Tailwind con ESLint» es gratis?

Sí — el texto completo de «Analizar Tailwind con ESLint» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Tailwind CSS Academy, actualiza a CoddyKit PRO. El curso de Tailwind CSS Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Analizar Tailwind con ESLint»?

Configure eslint-plugin-tailwindcss para advertir sobre nombres de clase no válidos y utilidades en conflicto, y para aplicar las convenciones de clases de su equipo. Practicas Tailwind CSS Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Tailwind CSS Academy?

No se requiere experiencia previa. Tailwind CSS Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Analizar Tailwind con ESLint»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Tailwind CSS Academy?

Sí. Cada lección de Tailwind CSS Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Auditar la salida CSS
  2. Ordenar clases y plugin de Prettier
  3. Analizar Tailwind con ESLint
  4. Convenciones del equipo y guía de estilo
← Volver a Tailwind CSS Academy