Minificateur JavaScript

Collez du JavaScript pour le réduire avec Terser : le code mort est supprimé, les noms sont raccourcis et les espaces disparaissent. Les erreurs de syntaxe indiquent la ligne et la colonne exactes.

Fonctionne dans le navigateurSans inscriptionAucun envoi de données

Sortie minifiée

Comment utiliser : Minificateur JavaScript

  1. Collez votre JavaScript ou ouvrez un fichier .js.
  2. Choisissez les options : Raccourcir les noms renomme les variables locales, Compresser réécrit le code en un équivalent plus court, Module ES autorise les import/export au niveau racine.
  3. Choisissez la cible ECMAScript prise en charge par les navigateurs de vos utilisateurs. ES2020 est sûr pour tous les navigateurs evergreen.
  4. Consultez la taille, le gain et l’estimation gzip sous le résultat.
  5. Copiez le code minifié ou téléchargez-le sous le nom output.min.js.

Que fait un minificateur JavaScript ?

La minification rend le JavaScript plus léger sans changer son comportement. Cet outil utilise Terser, le minificateur utilisé par webpack, Vite et Rollup, et applique trois types de modifications :

  • Suppression des espaces et commentaires : l’indentation, les sauts de ligne et les commentaires sont inutiles au moteur JavaScript.
  • Mangling : les noms de variables locales et de paramètres de fonctions comme subtotal deviennent des lettres uniques. Les noms globaux et les propriétés d’objets ne sont pas touchés, pour que votre API publique continue de fonctionner.
  • Compression : les expressions constantes sont précalculées, le code inaccessible est supprimé, les instructions if deviennent des ternaires et les fonctions courtes sont inlinées.

Minification ou gzip : faut-il les deux ?

Oui. Gzip et Brotli compressent les motifs d’octets répétés pendant le transfert, tandis que la minification supprime des octets que le navigateur devrait sinon télécharger, analyser et compiler. Un script typique perd 40 à 60 % grâce à la minification, puis encore 60 à 70 % grâce à gzip. La taille gzip affichée ici donne une bonne estimation de ce que votre serveur enverra réellement.

Conserver les commentaires de licence

De nombreuses licences open source (MIT, BSD, Apache) exigent que la mention de copyright accompagne le code. Par convention, les commentaires qui commencent par /*! ou contiennent @license ou @preserve sont conservés lorsque Conserver les commentaires de licence est activé.

Quand ne pas minifier à la main

Si votre projet utilise déjà un bundler, laissez-le minifier les builds de production et générer des source maps pour le débogage. Un minificateur en ligne est idéal pour les scripts ponctuels, les snippets pour un CMS ou un tag manager, les bookmarklets, ou pour voir jusqu’où un bout de code peut être réduit.

Questions fréquentes

Mon code est-il envoyé sur un serveur ?
Non. Terser s’exécute dans l’onglet de votre navigateur : votre code propriétaire ne quitte jamais votre machine.
La minification peut-elle casser mon code ?
Terser n’applique que des transformations qui préservent exactement le comportement d’un JavaScript valide. Le code qui dépend de Function.prototype.toString() ou des noms de variables locales via eval peut être affecté ; désactivez alors Raccourcir les noms.
La syntaxe moderne (async/await, classes, chaînage optionnel) est-elle prise en charge ?
Oui. Terser analyse la syntaxe ES2022+. Le réglage de cible contrôle uniquement la syntaxe que la sortie peut utiliser ; il ne transpile pas les fonctionnalités récentes vers des versions plus anciennes.
Quelle différence entre minify et uglify ?
C’est la même chose. UglifyJS était l’outil historique ; Terser en est le fork maintenu, avec une prise en charge complète d’ES2015+.

Outils associés