170 votes

Meilleur compresseur JavaScript

Quel est le meilleur compresseur JavaScript disponible ? Je suis à la recherche d'un outil qui :

  • est facile à utiliser
  • a un taux de compression élevé
  • Produire des résultats finaux fiables (ne pas perturber le code)

149voto

mishoo Points 1822

J'ai récemment publié UglifyJS un compresseur écrit en JavaScript (fonctionnant sur le système NodeJS). Node.js mais il peut être facilement modifié pour fonctionner sur n'importe quel moteur JavaScript, puisqu'il n'a besoin d'aucune Node.js internes). C'est beaucoup plus rapide que les deux Compresseur YUI y Fermeture de Google il compresse mieux que YUI sur tous les scripts sur lesquels je l'ai testé, et il est plus sûr que Closure (sait gérer les "eval" ou "with").

Outre la suppression des espaces blancs, UglifyJS effectue également les opérations suivantes :

  • modifie les noms des variables locales (généralement en caractères simples)
  • joint des déclarations de var consécutives
  • évite d'insérer des crochets, des parenthèses et des points-virgules inutiles.
  • optimise les IFs (supprime "else" quand il détecte qu'il n'est pas nécessaire, transforme les IFs en opérateurs &&, || ou ?/ : quand c'est possible, etc.)
  • transforme foo["bar"] en foo.bar si possible
  • supprime les guillemets des clés dans les littéraux d'objets, si possible
  • résout les expressions simples lorsque cela conduit à un code plus petit (1+3*4 ==> 13)

PS : Oh, il peut aussi "embellir" ;-)

124voto

Pat Points 18943

Revisiter cette question quelques années plus tard, UglifyJS semble être la meilleure option pour le moment.

Comme indiqué ci-dessous, il fonctionne sur la plateforme NodeJS, mais peut être facilement modifié pour fonctionner sur n'importe quel moteur JavaScript.

--- Ancienne réponse ci-dessous ---

Google a publié Compilateur de fermetures qui semble générer les plus petits fichiers jusqu'à présent, comme on peut le voir. aquí y aquí

Auparavant, les différentes options sont les suivants

En gros, Packer fait un meilleur travail de compression initiale, mais si vous avez l'intention de gzip les fichiers avant de les envoyer sur le fil (ce que vous devriez faire) Compresseur YUI obtient la plus petite taille finale.

Les tests ont été effectués sur du code jQuery.

  • Bibliothèque jQuery originale 62 885 octets , 19 758 octets après gzip
  • jQuery minifié avec JSMin 36 391 octets, 11 541 octets après gzip
  • jQuery minifié avec Packer 21 557 octets , 11 119 octets après gzip
  • jQuery réduit avec le compresseur YUI 31,822 bytes , 10,818 bytes après gzip

@ daniel james mentionne dans le commentaire Réchauffeur de compresseur qui montre que Packer est en tête du classement pour la meilleure compression, donc je suppose que ymmv.

43voto

kamens Points 6043

Compresseur YUI est le meilleur choix. Il a un excellent taux de compression, est bien testé, est utilisé par de nombreux sites de premier plan et est personnellement recommandé par moi.

Je l'ai utilisé pour mes projets sans une seule erreur JavaScript ou hoquet. Et il a une bonne documentation.

Je n'ai jamais utilisé ses capacités de compression CSS, mais elles existent aussi. La compression CSS fonctionne tout aussi bien.

Note : Bien que Dean Edwards / emballeuse / atteint un meilleur taux de compression que YUI Compressor, j'ai rencontré quelques erreurs JavaScript en l'utilisant.

8voto

Jason Bunting Points 27534

J'utilise ShrinkSafe du projet Dojo - il est exceptionnel car il utilise en fait un interpréteur JavaScript ( Rhino ) pour trouver les symboles dans le code et comprendre leur portée, etc., ce qui permet de s'assurer que le code fonctionnera à l'autre bout, contrairement à de nombreux outils de compression qui utilisent des expressions rationnelles pour faire la même chose (ce qui n'est pas aussi fiable).

J'ai actuellement une tâche MSBuild dans un fichier Projet de déploiement Web dans ma solution Visual Studio actuelle qui exécute un script qui à son tour exécute tous les fichiers JS de la solution à travers ShrinkSafe avant que nous déployions et cela fonctionne assez bien.

EDITAR: Soit dit en passant, le terme "meilleur" est sujet à débat, car ses critères varient en fonction des besoins du projet. Personnellement, je pense que ShrinkSafe est un bon équilibre ; pour certaines personnes qui pensent que la plus petite taille == le mieux, ce sera insuffisant.

EDITAR: Il convient de noter que le compresseur YUI utilise également Rhino.

5voto

chakrit Points 29562

Essayez JSMin Il y a aussi des ports C#, Java, C et d'autres qui sont facilement disponibles.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X