
Tree shaking vs minification : optimiser votre bundle
Comprenez les différences entre tree shaking et minification JavaScript — deux techniques complémentaires pour réduire la taille de vos bundles et accélérer votre site.
Deux techniques souvent confondues
En optimisant un front moderne, vous entendez sans cesse « minifier » et « tree-shaker » vos bundles. Ce ne sont pas deux noms pour la même chose : la minification compresse le code déjà inclus dans le fichier final (espaces, noms courts), alors que le tree shaking retire du graphe les modules qui ne sont jamais utilisés. Les deux réduisent les octets transférés, mais à des étapes différentes du pipeline. Pour une passe rapide sur un fichier isolé (sans bundler), un minificateur JavaScript en ligne suffit souvent ; pour une application complète, vous combinez généralement analyse statique des imports, bundler en mode production et minificateur (Terser, esbuild, SWC…). Ce guide pose les définitions, un tableau comparatif et une configuration réaliste avec Vite ou Webpack — en renvoyant vers notre guide de minification JavaScript pour les réglages fins.
Minification et tree shaking : deux effets différents
La minification travaille sur un fichier dont le contenu est déjà décidé : elle enlève tout ce qui est superflu pour le moteur JS (espaces, commentaires, renommage local agressif selon l’outil). Elle ne peut pas deviner si une fonction exportée servira plus tard si elle est bien présente dans le bundle. Pour les bases et comparatifs d’outils, voyez notre guide complet sur la minification JavaScript. Pour inspecter ou retrouver la lisibilité après coup, gardez sous la main un déminificateur JavaScript ou la fonction Beautify.
Avant
Après
Le tree shaking s’appuie sur les modules ES (`import` / `export`) et sur une analyse statique : tout ce qui n’est pas référencé depuis une entrée peut être écarté avant même que la minification intervienne. Les bibliothèques doivent exposer des builds compatibles (`sideEffects` dans `package.json`, pas de mutations globales cachées). La démonstration la plus parlante reste le passage d’un import « baril » à un import ciblé.
Avant
Après
Il n’existe pas de tree shaking ES modules pour votre feuille CSS comme pour le JS, mais les pipelines PostCSS / Tailwind / PurgeCSS jouent un rôle équivalent : ils retirent les règles non utilisées avant la phase où vous appliquez un minificateur CSS en ligne ou PostCSS cssnano sur la sortie finale.
Mesurer ce qui change vraiment dans le bundle
Les deux techniques se voient dans des colonnes différentes du rapport : le tree shaking diminue le nombre et la surface des modules (par exemple lodash qui disparaît presque entièrement), la minification réduit la colonne « taille gzip » pour un même graphe. Utilisez un treemap pour éviter les régressions après mise à jour de dépendances.

Activez systématiquement `NODE_ENV=production` (ou équivalent) : sans ce signal, certains bundlers désactivent optimisations et dead-code elimination.
Tableau mental : minification vs tree shaking
Utilisez ce récapitulatif quand vous estimez un ticket d’optimisation : la première question est « ce code doit-il exister dans le graphe ? », la seconde est « comment réduire sa représentation textuelle ? ».
Minification
Tree shaking
Ces contrôles évitent les optimisations hors sol.
Minifier rapidement un fichier hors bundler
Quand vous n’avez pas encore branché Webpack/Vite — ou que vous optimisez un script livré tel quel — collez votre JS dans notre outil : vous obtenez une sortie compactée immédiatement, avec option inverse pour relire le code.
Coller ou charger votre fichier
Utilisez le minificateur JavaScript en ligne : tout reste dans le navigateur.
Comparer avec Beautify
Alternez avec Beautify pour un format lisible équivalent à un petit « undo » avant de réinjecter dans votre pipeline.
Ne pas confondre avec le shaking
L’outil minifie un fichier à la fois ; pour éliminer des modules dans tout un projet, il faut bundler en production.
Quand votre codebase grossit, alignez-vous sur les pratiques décrites dans notre comparatif minificateurs en ligne vs outils de build : l’outil en ligne garde une place pour les exceptions et les prototypes.
Combiner tree shaking et minification dans le build
`vite build` active Rollup en production avec tree shaking et minification esbuild par défaut — vérifiez que vos imports sont compatibles ES modules.
Configuration
Utilisation
`mode: 'production'` active `usedExports` et la compilation avec minifier ; assurez-vous que `package.json` des libs déclare correctement les effets de bord.
Configuration
Utilisation
Enchaînez purge Tailwind ou PurgeCSS, puis minification — comme vu dans notre guide sur la minification CSS. Le shaking « logique » est côté purge ; la minification peaufine la sortie.
Exemple de base
Minification de fichier
Conclusion
Tree shaking et minification sont complémentaires : le premier dessine un graphe léger, le second écrit ce graphe avec le minimum d’octets. Ignorez l’un ou l’autre et vous laissez soit du code mort embarqué, soit une représentation encore verbeuse d’un graphe déjà propre. Pour les snippets hors projet, un minificateur en ligne suffit ; pour tout le reste, automatisez dans votre bundler tout en gardant FastMinify sous la main pour les cas limites.
Articles connexes

Réduisez la facture OpenAI/Anthropic/Gemini : estimez input/output, activez batch et caching dans vos calculs — tarifs vérifiés, 100 % local.

RAG, agents multi-tours, system prompts : calculez le % de fenêtre utilisée et la marge restante avant d'envoyer à l'API.

Guide honnête : données tabulaires uniformes, workflow convertir → compter → tarifer → contexte ; pas un manifeste de remplacement JSON/YAML.