Tailwind v4 + Vite : modèle de configuration en 5 minutes et structure de dossiers

L’année dernière, sur un nouveau projet, j’ai passé une demi-heure à peaufiner les chemins content dans tailwind.config.js. Je me demandais : est-ce que ça ne pourrait pas être plus simple ?
Cette année, Tailwind v4 y est presque arrivé.
Aujourd’hui, trois lignes de code suffisent pour faire tourner un projet Tailwind complet — sans config PostCSS, sans tailwind.config.js, sans lister à la main les fichiers à scanner. Quand j’ai vu ça la première fois, j’avoue que j’ai eu du mal à y croire.
Cet article vise à vous épargner cette demi-heure. Vous aurez un modèle complet et une structure de dossiers que j’utilise depuis six mois et qui tient plutôt bien la route.
1. Pourquoi Tailwind v4 + Vite ?
1.1 v4 est-il vraiment si rapide ?
L’équipe annonce un gain de vitesse de build d’un facteur 10. De mon côté, sur un projet moyen, on est passé de 8 secondes à moins d’une. Le moteur Oxide, écrit en Rust, y est pour beaucoup.
Ce qui me plaît encore plus, c’est la simplification de la config. Avant, un nouveau projet Tailwind impliquait trois ou quatre fichiers : tailwind.config.js, postcss.config.js, la config Vite et les directives @tailwind dans le CSS. Maintenant ? Un seul fichier à toucher.
1.2 La rapidité de Vite n’est pas du marketing
Le serveur de dev Vite démarre quasi instantanément. Le HMR est très réactif : on modifie du CSS, le rafraîchissement se fait sans latence perceptible. Une fois habitué, difficile de revenir en arrière.
1.3 v3 vs v4 : comparaison directe
Voici le tableau :
| Critère | Tailwind v3 | Tailwind v4 |
|---|---|---|
| Installation | npm install -D tailwindcss postcss autoprefixer | npm install tailwindcss @tailwindcss/vite |
| Fichiers de config | tailwind.config.js requis | Inutile : config dans le CSS |
| Intégration Vite | Via plugin PostCSS | Plugin Vite officiel |
| Scan du contenu | content: ['./src/**/*.{html,js}'] à la main | Scan automatique |
| Thème | Objet JS : theme: { colors: {...} } | Propriétés CSS : @theme { --color-*: ... } |
L’idée centrale de v4 : déplacer la config du JS vers le CSS. Vous ajustez le thème au même endroit que vos styles, sans sauter entre fichiers.
2. Modèle de configuration en 5 minutes
On y va.
2.1 Initialisation du projet
Dans le terminal :
# Créer un projet Vite avec le template TypeScript
npm create vite@latest my-project -- --template vanilla-ts
# Entrer dans le dossier
cd my-project
# Installer les dépendances
npm install
Comptez environ 30 secondes.
2.2 Installer Tailwind v4
# Tailwind CSS et le plugin Vite officiel
npm install tailwindcss @tailwindcss/vite
Une seule commande. Pas de postcss ni autoprefixer : v4 les intègre.
2.3 Configurer Vite
Ouvrez vite.config.ts et adaptez ainsi :
// vite.config.ts
import { defineConfig } from 'vite'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
// Ajouter le plugin Tailwind
plugins: [tailwindcss()],
})
Trois lignes. C’est tout.
2.4 Créer le fichier CSS
Sous src/styles/, créez main.css :
/* src/styles/main.css */
/* Importer Tailwind — une ligne pour les styles de base */
@import "tailwindcss";
/* Thème personnalisé (optionnel) */
@theme {
--color-primary: #3b82f6;
--color-secondary: #10b981;
}
Le bloc @theme est la nouvelle syntaxe v4 : couleurs, polices, espacements en variables CSS. Plus lisible qu’un tailwind.config.js.
2.5 Importer le CSS
En tête de src/main.ts :
// src/main.ts
import './styles/main.css'
// Votre code existant...
2.6 Tester
Dans index.html ou un composant :
<div class="bg-primary text-white p-4 rounded-lg">
Tailwind v4 tourne !
</div>
Puis :
npm run dev
Une carte au fond bleu confirme que la config est bonne. Chronométré : oui, en moins de 5 minutes.
3. Structure de dossiers recommandée
Une fois le projet lancé, voici comment je range les fichiers :
3.1 Arborescence complète
my-project/
├── public/
│ └── favicon.ico
├── src/
│ ├── components/
│ │ ├── ui/ # Composants UI de base
│ │ │ ├── Button.ts
│ │ │ └── Input.ts
│ │ └── layout/ # Composants de mise en page
│ │ ├── Header.ts
│ │ └── Footer.ts
│ ├── styles/
│ │ ├── main.css # Entrée principale (import Tailwind)
│ │ ├── components.css # Styles liés aux composants
│ │ └── utilities.css # Classes utilitaires custom
│ ├── utils/
│ │ └── helpers.ts
│ ├── pages/ # Pages (application multi-pages)
│ ├── assets/ # Ressources statiques
│ │ ├── images/
│ │ └── fonts/
│ ├── main.ts
│ └── vite-env.d.ts
├── index.html
├── package.json
├── tsconfig.json
└── vite.config.ts
3.2 Pourquoi cette organisation ?
components/ui/ : boutons, champs, modales — réutilisables, sans logique métier.
components/layout/ : Header, Footer, Sidebar — la structure de page, distincte des composants ui.
styles/ : tout le CSS au même endroit. Avec v4, la config vit dans le CSS ; centraliser simplifie les changements.
utils/ : fonctions pures (dates, chaînes, etc.).
3.3 Organisation des fichiers CSS
/* src/styles/main.css — fichier d'entrée */
/* Importer Tailwind */
@import "tailwindcss";
/* Autres feuilles */
@import "./components.css";
@import "./utilities.css";
/* Styles de base globaux */
@layer base {
body {
@apply bg-gray-50 text-gray-900;
}
/* Liens par défaut */
a {
@apply text-primary hover:underline;
}
}
@layer base définit la couche la plus basse ; Tailwind gère mieux les priorités qu’un body { ... } brut.
4. Checklist de migration v3
Pour upgrader un projet v3, suivez cette liste. J’ai migré plusieurs dépôts récemment ; les pièges ci-dessous viennent de là.
4.1 Fichiers de configuration
- Supprimer
tailwind.config.js(s’il ne servait qu’à Tailwind) - Supprimer
postcss.config.js(s’il ne servait qu’à Tailwind) - Ajouter
@import "tailwindcss"dans le CSS - Mettre à jour
vite.config.tsavec le plugin@tailwindcss/vite
4.2 Dépendances
# Désinstaller les anciennes dépendances
npm uninstall postcss autoprefixer tailwindcss
# Installer les nouvelles
npm install tailwindcss @tailwindcss/vite
- Lancer la désinstallation
- Lancer l’installation
- Vérifier les versions dans
package.json
4.3 Styles
- Remplacer
@tailwind base; @tailwind components; @tailwind utilities;par@import "tailwindcss"; - Migrer le thème de
tailwind.config.jsvers un bloc@themeen CSS - Vérifier que les utilitaires custom fonctionnent encore
Exemple de migration du thème :
/* v3 — tailwind.config.js */
module.exports = {
theme: {
colors: {
primary: '#3b82f6',
}
}
}
/* v4 — main.css */
@theme {
--color-primary: #3b82f6;
}
4.4 Tests
-
npm run dev— l’environnement de dev démarre -
npm run build— le build de prod réussit - Ouvrir la page — les styles sont présents
- Modifier un CSS — le hot reload réagit
5. Problèmes fréquents et solutions
Voici ce que je rencontre le plus souvent à la config ou à la migration.
5.1 Les styles ne s’appliquent pas
Vous mettez class="bg-primary", la page reste blanche.
Étapes de débogage :
- Outils développeur : le CSS se charge-t-il ?
main.tsimporte-t-il bien le fichier CSS ?- Le plugin dans
vite.config.tsest-il correct ?
J’ai déjà oublié import './styles/main.css' dans main.ts. Erreur bête, mais fréquente.
5.2 Le hot reload ne réagit pas
Vous changez le CSS, rien ne bouge.
Étapes de débogage :
- Vite >= 5.0 (les vieilles versions posent problème)
- Redémarrer le serveur de dev
- Vider le cache ou tester en navigation privée
Sinon, regarder la console : parfois un autre plugin entre en conflit.
5.3 CSS trop volumineux en production
Le build sort un fichier CSS de plusieurs centaines de Ko.
Étapes de débogage :
- Confirmer une version v4 récente (meilleur tree-shaking)
- Vérifier qu’on n’importe pas toute une lib d’icônes ou une grosse dépendance
- Utiliser
@layerpour structurer — Tailwind gère mieux priorité et déduplication
En pratique, la sortie v4 est déjà assez légère. Si c’est énorme, c’est souvent du CSS custom en trop.
Résumé
En bref :
- Installation :
npm install tailwindcss @tailwindcss/vite - Vite : ajouter le plugin
tailwindcss() - CSS :
@import "tailwindcss"+@themepour le thème - Lancer :
npm run dev
Le grand changement v4 : la config quitte le JS pour le CSS. Au début c’est un peu déroutant ; après quelques semaines, c’est plus direct — on ajuste le thème là où on écrit les styles.
En migration v3, traduisez le thème de tailwind.config.js en syntaxe @theme. Ça prend un moment, mais vous gagnez des builds plus rapides et une arborescence plus simple. Le calcul vaut le coup.
Configurer un projet Tailwind v4 + Vite
Intégrer Tailwind CSS v4 et Vite en 5 minutes
⏱️ Estimated time: 5 min
- 1
Step 1: Créer le projet et installer les dépendances
Exécutez les commandes suivantes :
```bash
npm create vite@latest my-project -- --template vanilla-ts
cd my-project
npm install
npm install tailwindcss @tailwindcss/vite
```
Pas besoin d'installer postcss ni autoprefixer : v4 les intègre déjà. - 2
Step 2: Configurer le plugin Vite
Modifiez `vite.config.ts` :
```typescript
import { defineConfig } from 'vite'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
plugins: [tailwindcss()],
})
```
Trois lignes suffisent, sans autre fichier de configuration. - 3
Step 3: Créer le fichier CSS d'entrée
Créez `src/styles/main.css` :
```css
@import "tailwindcss";
@theme {
--color-primary: #3b82f6;
}
```
Le bloc `@theme` sert à personnaliser le thème avec la syntaxe des variables CSS. - 4
Step 4: Importer le CSS et vérifier
En tête de `src/main.ts`, ajoutez :
```typescript
import './styles/main.css'
```
Lancez `npm run dev` et testez des classes Tailwind sur la page pour confirmer que tout fonctionne. - 5
Step 5: Migration depuis v3 (optionnel)
Depuis v3, il faut :
• Supprimer `tailwind.config.js` et `postcss.config.js`
• Remplacer les directives `@tailwind` par `@import "tailwindcss"`
• Migrer la config thème JS vers un bloc CSS `@theme`
• Mettre à jour les dépendances : désinstaller les anciens paquets, installer v4
FAQ
Quelle est la différence majeure entre Tailwind v4 et v3 ?
Faut-il encore PostCSS en v4 ?
Comment migrer la config thème de v3 ?
```css
@theme {
--color-primary: #3b82f6;
--color-secondary: #10b981;
}
```
Couleurs, polices, espacements, etc. suivent cette syntaxe.
Les styles ne s'appliquent pas — comment déboguer ?
Quelles versions de Vite sont supportées en v4 ?
6 min de lecture · Publié le: 25 mars 2026 · Mis à jour le: 27 juil. 2026
Tailwind & shadcn/ui en pratique
Vous lisez le premier article de cette série. Continuez avec le suivant ou ouvrez le hub de la série pour voir tout le parcours.
Précédent
Vous êtes au début de cette série.
Suivant
Tailwind CSS v4 : nouveautés, performance, configuration et guide de migration
Décryptage des gains Oxide, de la configuration CSS-first, de l'installation simplifiée et des breaking changes de Tailwind CSS v4, avec checklist de migration et étapes opérationnelles.
Partie 2 sur 14



Commentaires
Connectez-vous avec GitHub pour laisser un commentaire