Build Tool

Vite

Vite est l'outil de build moderne qui sert vos sources via des modules ES natifs en développement et les bundle avec Rollup pour la production. Rapide au démarrage, rapide pour itérer.

intermediate14 min readUpdated 15 sept. 2026
vite.config.ts
ts
// vite.config.ts
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";

export default defineConfig({
  plugins: [react()],
  server: { port: 5173, open: true },
  build: {
    outDir: "dist",
    sourcemap: true,
  },
});
Créé par
Evan You, 2020
Serveur de dev
Modules ES natifs
Build de production
Rollup
Config
vite.config.ts
Support frameworks
React, Vue, Svelte, Solid
Utilisé par
Vitest, Astro, Nuxt, SvelteKit

Pourquoi c'est important

Pourquoi Vite a remplacé les anciens bundlers

Serveur de dev instantané

Le navigateur charge vos modules via ESM natif, ainsi le serveur démarre en quelques millisecondes, quelle que soit la taille du projet.

Builds de production optimisés

Rollup produit des bundles minifiés, avec tree-shaking et code-splitting, utilisant des noms de fichiers hachés pour le cache.

Une configuration partagée

La même config alimente le dev, le build, les tests et l'outillage du framework, évitant ainsi toute duplication.

Le tableau complet

Les trois idées derrière Vite

Un serveur de dev utilisant les modules ES natifs, un build Rollup pour la production, et une configuration unique partagée sur toute la chaîne d'outils.

Le serveur de dev

Servir

Sert les fichiers sources en tant que modules ES natifs et les transforme à la demande.

Le build

Bundler

Rollup bundle et optimise l'application pour la production, avec code splitting et hachage.

Plugins et config

Étendre

Une API de plugins et un fichier de config unique couvrent les frameworks, les outils CSS et les transformations personnalisées.

Vite en un coup d'œil

Le cœur de Vite

vite et vite build

Une commande pour le serveur de dev, une autre pour le build de production.

vite.config.ts

Plugins, alias, options de serveur et de build dans un seul fichier.

Plugins

Les intégrations de frameworks et d'outils partagent une interface de plugin commune.

import.meta.env

Variables d'environnement exposées avec un préfixe VITE_.

Import d'assets

Importez des images, des polices et du CSS directement depuis JavaScript.

Code splitting

L'import dynamique crée des chunks séparés chargés à la demande.

Un bref aperçu

D'un serveur de dev rapide à la chaîne d'outils par défaut

  1. 2020

    Sortie de Vite

    Evan You introduit un serveur de dev basé sur les modules ES natifs.

    20
  2. 2021

    Adoption rapide

    Vue, React, Svelte et d'autres adoptent Vite comme outillage recommandé.

    21
  3. 2022

    Vite 3 et 4

    Sortie de Rollup 3, d'une API de plugins stable et de builds plus rapides.

    22
  4. 2024

    Vite 5 et 6

    Travail continu sur les performances et option basée sur Rust via Rolldown.

    24
  5. Aujourd'hui

    La chaîne d'outils par défaut

    Utilisé directement et comme moteur interne de Vitest, Astro, Nuxt et SvelteKit.

    Aujourd'hui

Le guide complet

Vite: Tout ce que vous devez savoir

Qu’est-ce que Vite ?

Vite est un outil de build qui remplit deux fonctions : un serveur de développement prêt presque instantanément, et un build de production qui génère des bundles optimisés. Créé par Evan You en 2020, il est devenu la chaîne d’outils par défaut pour la plupart des frameworks front-end modernes.

L’idée fondamentale est que le développement et la production présentent des goulots d’étranglement différents. En développement, vous recherchez un démarrage et des mises à jour rapides ; Vite ne procède donc à aucun bundling — il sert vos sources via des modules ES natifs et transforme les fichiers à la demande. En production, vous voulez un résultat le plus léger et rapide possible, c’est pourquoi Vite utilise Rollup pour le bundling et l’optimisation.

Le serveur de développement

L’exécution de vite lance un serveur de développement qui sert vos sources sous forme de modules ES natifs. Le navigateur demande chaque module, et Vite le transforme à la volée.

# terminal
vite          # start the dev server
vite build    # production build
vite preview  # preview the production build locally

Comme il n’y a pas de bundle complet à produire, le démarrage se mesure en millisecondes et reste constant à mesure que le projet s’agrandit. Les dépendances sont pré-bundlées une seule fois avec esbuild, car elles changent rarement, ce qui évite un flux massif de petites requêtes. Le remplacement de module à chaud (Hot Module Replacement) ne met ensuite à jour que les modules modifiés, en préservant l’état de l’application lorsque c’est possible.

Le build de production

vite build exécute le pipeline Rollup et écrit le résultat dans dist par défaut.

  • Le Tree-shaking supprime les exports inutilisés.
  • Le Code splitting génère des chunks pour les routes et les imports dynamiques.
  • La Minification réduit la taille du JavaScript, du CSS et du HTML.
  • Le Hachage des assets ajoute des hashs de contenu pour optimiser la mise en cache à long terme.
  • La Gestion du CSS extrait et minifie les feuilles de style.

Le résultat est un ensemble de fichiers statiques que vous pouvez déployer sur n’importe quel hébergeur, CDN ou plateforme statique.

Configuration

Vite lit un fichier vite.config.ts à la racine du projet.

// vite.config.ts
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";

export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: { "@": "/src" },
  },
  server: {
    port: 5173,
    proxy: {
      "/api": "http://localhost:8787",
    },
  },
  build: {
    outDir: "dist",
    sourcemap: true,
  },
});

L’option resolve.alias permet de créer des raccourcis d’importation, et server.proxy redirige les requêtes API vers un backend pendant le développement, ce qui évite les problèmes de CORS. La plupart des configurations de frameworks génèrent ce fichier pour vous et ne nécessitent que quelques ajouts mineurs.

Plugins

Les plugins sont le moyen par lequel Vite apporte son support aux frameworks et aux outils. Ils implémentent une interface compatible avec Rollup, enrichie de hooks spécifiques à Vite.

// plugins.ts
import vue from "@vitejs/plugin-vue";
import { defineConfig } from "vite";

export default defineConfig({
  plugins: [vue()],
});

Les plugins courants couvrent React, Vue, Svelte et Solid, ainsi que des outils CSS comme Tailwind, le support des navigateurs obsolètes, les fonctionnalités PWA et l’analyse de bundle. L’interface étant compatible avec Rollup, une grande partie de l’écosystème de plugins Rollup fonctionne directement.

Variables d’environnement

Vite charge les variables depuis des fichiers .env et n’expose au code client que celles préfixées par VITE_.

# .env
VITE_API_URL=https://api.example.com
DB_PASSWORD=secret
// env.ts
const url = import.meta.env.VITE_API_URL;
const isDev = import.meta.env.DEV;

Le préfixe VITE_ est un mécanisme de sécurité : tout ce qui ne le possède pas reste en dehors du bundle client, évitant ainsi toute fuite accidentelle de secrets. Les variables sont remplacées lors de la compilation (build time) et non lues lors de l’exécution (runtime), et sont accessibles via import.meta.env.

Assets et CSS

Vous importez vos assets directement depuis JavaScript, et Vite s’occupe du reste.

// assets.ts
import logo from "./logo.svg";
import "./styles.css";
import styles from "./Button.module.css";

Les petits assets sont intégrés sous forme d’URLs de données (data URLs), les plus volumineux sont générés avec des noms hachés, et le CSS importé de cette manière est regroupé et, en développement, bénéficie du hot-reloading. Le répertoire public est destiné aux fichiers qui doivent conserver un chemin exact, comme robots.txt ou un favicon référencé par URL.

Code splitting

L’import dynamique import() crée un chunk séparé chargé à la demande, ce qui constitue le levier principal pour maintenir la taille du bundle initial réduite.

// lazy.ts
const { Chart } = await import("./Chart");

Appliquez-le aux routes, aux modales, aux éditeurs et à toute fonctionnalité qui n’est pas nécessaire lors du premier affichage (first paint). Les frameworks basés sur Vite gèrent souvent le splitting au niveau des routes pour vous, mais comprendre ce mécanisme primitif est utile lorsque vous avez besoin d’un contrôle plus précis.

Au-delà de l’application

Vite ne sert pas uniquement aux applications mono-page. Le Library mode permet de créer un package distribuable avec les formats appropriés et des dépendances externalisées. Vite prend également en charge le server-side rendering, et il constitue le moteur interne de Vitest, Astro, Nuxt et SvelteKit. Cette fondation commune explique pourquoi la même configuration, les mêmes alias et les mêmes plugins fonctionnent pour le développement, les tests et le build.

Bonnes pratiques

  • Gardez une configuration minimale et laissez les plugins du framework gérer les détails.
  • Utilisez resolve.alias pour des imports propres au lieu de longs chemins relatifs.
  • Utilisez un proxy pour l’API en développement plutôt que de coder l’hôte en dur.
  • Préfixez les variables d’environnement côté client avec VITE_ et laissez les secrets sans préfixe.
  • Fractionnez les fonctionnalités lourdes avec des imports dynamiques.
  • Importez les assets depuis JavaScript pour qu’ils soient hashés et optimisés.
  • Activez les source maps en production si vous utilisez un outil de suivi d’erreurs.

Erreurs courantes

  • S’attendre à trouver process.env dans le code client au lieu de import.meta.env.
  • Exposer des secrets en les préfixant par VITE_.
  • Placer dans public des fichiers qui devraient être importés et hachés.
  • Livrer un seul bundle énorme en n’utilisant jamais d’imports dynamiques.
  • Ajouter des plugins qui font doublon avec les fonctionnalités d’un plugin de framework.
  • Lutter contre la configuration au lieu d’utiliser un preset de framework.

Et après ?

Vite est le socle de la chaîne d’outils moderne. Comparez-le avec Webpack pour les projets plus anciens, lancez vos tests avec Vitest, et découvrez comment il propulse les frameworks dans les guides React, Astro et SvelteKit. Ensuite, ouvrez le fichier vite.config.ts d’un projet et effectuez une modification volontaire pour en observer l’effet.

Chargement des assets

Importez les assets depuis JavaScript pour que le bundler puisse les hacher et les optimiser. Le dossier public est réservé aux fichiers qui doivent garder un chemin exact.

Préférer
import logo from "./logo.svg";

// hashed, optimised,
// tree-shaken when unused
<img src={logo} alt="Logo" />;
Éviter
// no hashing, no optimisation,
// easy to reference a
// file that does not exist
<img src="/logo.svg" alt="Logo" />;

Variables d'environnement

Seules les variables préfixées par VITE_ sont exposées au client, et elles sont lues via import.meta.env.

Préférer
// .env
// VITE_API_URL=https://api.example.com

const url = import.meta.env.VITE_API_URL;
Éviter
// process.env is not defined
// in the browser bundle
const url = process.env.API_URL;

FAQ

Foire aux questions

Keep learning

Related topics from the roadmap.

$ commencer à apprendre

Prêt à apprendre Vite ?

Notre tutoriel interactif vous guide à travers Vite pas à pas — avec des quiz et du vrai code que vous pouvez exécuter dans le navigateur.