Tailwind CSS Academy · Lektion

Linting af Tailwind med ESLint

Konfigurer eslint-plugin-tailwindcss til at advare om ugyldige klassenavne og modstridende utilities samt håndhæve jeres teams klassekonventioner.

Lektion 3 af 413 trin

Linting af Tailwind med ESLint er en gratis Tailwind CSS Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Tailwind CSS Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Tailwind CSS Academy-kurset indeholder 4 lektioner i alt.

Hvorfor du bør lint’e dine Tailwind-klasser

Slåfejl i Tailwind-klassenavne er stille fejl — browseren ignorerer ganske enkelt ukendte klasser uden advarsler i konsollen. Et manglende bogstav som bg-blue-50O (stort O i stedet for nul) anvender ingen baggrund, og fejlen kan gå ubemærket hen i flere dage. ESLint med et Tailwind-plugin opdager disse problemer under udviklingen, før de når produktionen.

Installation af eslint-plugin-tailwindcss

eslint-plugin-tailwindcss er det mest udbredte ESLint-plugin til Tailwind. Det validerer klassenavne mod din Tailwind-konfiguration, advarer om modstridende hjælpeværktøjer og kan håndhæve dit teams konventioner for rækkefølgen af klasser. Installer det sammen med ESLint i projektets udviklingsafhængigheder.

npm install -D eslint eslint-plugin-tailwindcss

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

Konfiguration af pluginet (ældre konfiguration)

I det traditionelle format med .eslintrc skal du tilføje tailwindcss til plugin-arrayet og udvide den anbefalede konfiguration. Det anbefalede sæt aktiverer de tre centrale regler: classnames-order, no-custom-classname og 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',
  },
};

Konfiguration af pluginet (flad konfiguration)

Til ESLint 9's nye flade konfigurationsformat skal du importere pluginet og sprede den anbefalede konfiguration ind i dit konfigurationsarray. Peg indstillingen tailwindConfig på din konfigurationsfil, så pluginet kan læse dine brugerdefinerede temaværdier og plugins, når det validerer klassenavne.

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

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

Reglen no-contradicting-classname

Reglen no-contradicting-classname opdager modstridende hjælpeværktøjer, der anvendes på det samme element — for eksempel hvis du bruger både block og inline på den samme div eller både w-full og w-auto uden et responsivt præfiks. Disse konflikter giver uforudsigelige resultater, som er svære at fejlfinde uden linting-understøttelse.

<!-- 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">

Reglen no-custom-classname

Reglen no-custom-classname advarer, når du skriver en klasse, der ikke er en del af Tailwind-outputtet — hverken et indbygget hjælpeværktøj eller en brugerdefineret klasse, der er defineret i din konfiguration eller dine plugins. Det hjælper med at opdage slåfejl og forhindrer udviklere i at skrive almindelige CSS-klassenavne i et Tailwind-projekt uden at følge de rigtige procedurer.

<!-- 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'] } } */

Reglen classnames-order

Reglen classnames-order håndhæver den samme kanoniske rækkefølge af klasser, som Prettier-pluginet producerer. Når du bruger begge værktøjer, skal du konfigurere det ene som den autoritative kilde til rækkefølgen. De fleste teams bruger Prettier til automatisk formatering og deaktiverer ESLints sorteringsregel for at undgå konflikter mellem de to værktøjer.

// .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',
  },
};

Tilladelse af tilsigtede brugerdefinerede klasser

Hvis dit projekt bruger brugerdefinerede CSS-klassenavne sammen med Tailwind-hjælpeværktøjer — for eksempel klasser fra et animationbibliotek fra en tredjepart eller ældre CSS — skal du tilføje dem til indstillingen whitelist. Det fjerner falske positiver, samtidig med at ægte slåfejl i Tailwind-klassenavne stadig opdages.

// .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'],
    },
  },
};

Kørsel af ESLint i terminalen

Tilføj et lint-script til din package.json, der målretter alle skabelonfiler. Kør det lokalt og i CI for at finde fejl i klassenavne, før de merges. Flaget --fix retter problemer med rækkefølgen automatisk, men kan ikke rette slåfejl — de kræver manuel gennemgang.

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

Integration med editoren til feedback i realtid

Installer ESLint-udvidelsen til VS Code for at se understregede fejl direkte i editoren, mens du skriver. Fejl i Tailwind-klasser vises som gule advarsler eller røde fejl direkte i koden, så en slåfejl er umulig at overse. Kombiner dette med udvidelsen Tailwind CSS IntelliSense for autofuldførelse, så lintingen lukker feedbacksløjfen helt.

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

Effektiv kombination af ESLint og Prettier

Brug ESLint til validering — så slåfejl, modstridende og ukendte klassenavne opdages. Brug Prettier til formatering — så klasser sorteres i den kanoniske rækkefølge. Deaktivér ESLint-reglen classnames-order, så Prettier alene styrer sorteringen. Denne opdeling af ansvarsområder giver dig det bedste fra begge værktøjer uden konflikter.

// 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"

Hurtigt tjek

Test din forståelse af begreberne fra Tailwind CSS Mastery i denne lektion.

Opsummering af lektionen

I denne lektion har du lært at: installere eslint-plugin-tailwindcss for at opdage slåfejl og modstridende klasser, bruge de tre centrale regler (no-contradicting-classname, no-custom-classname, classnames-order) og kombinere ESLint med Prettier, så hvert værktøj har sit eget ansvar. Næste gang definerer vi teamkonventioner og en stilguide.

Gratis at komme i gang

Lær HTML med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “Linting af Tailwind med ESLint” gratis?

Ja — hele teksten til “Linting af Tailwind med ESLint” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Tailwind CSS Academy-kurset, skal du opgradere til CoddyKit PRO. Tailwind CSS Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Linting af Tailwind med ESLint”?

Konfigurer eslint-plugin-tailwindcss til at advare om ugyldige klassenavne og modstridende utilities samt håndhæve jeres teams klassekonventioner. Du øver dig i Tailwind CSS Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Tailwind CSS Academy?

Der kræves ingen tidligere erfaring. Tailwind CSS Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Linting af Tailwind med ESLint”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Tailwind CSS Academy-lektion?

Ja. Alle Tailwind CSS Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Revision af jeres CSS-output
  2. Klassesortering og Prettier-plugin
  3. Linting af Tailwind med ESLint
  4. Teamkonventioner og styleguide
← Tilbage til Tailwind CSS Academy