Question

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

  • est facile à utiliser
  • a un taux de compression élevé
  • Produire des résultats fiables les résultats de fin (ne pas gâcher le code)
Était-ce utile?

La solution

J'ai récemment publié UglifyJS, un JavaScript compresseur qui est écrit en JavaScript (s'exécute sur l'NodeJS Node.js plate-forme, mais il peut être facilement modifié pour fonctionner sur n'importe quel moteur JavaScript, puisqu'il n'en a pas besoin Node.js internes).C'est beaucoup plus rapide que les deux YUI Compressor et Google Fermeture, il compresse mieux que YUI sur tous les scripts que j'ai testé, et c'est plus sûr que la Fermeture (sait traiter avec des "eval" ou "avec").

Autres que les espaces en retrait, UglifyJS également les éléments suivants:

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

PS:Oh, il peut "embellir" ainsi.;-)

Autres conseils

Un réexamen de cette question quelques années plus tard, UglifyJS, semble être la meilleure option à partir de maintenant.

Comme indiqué ci-dessous, il s'exécute sur l'NodeJS plate-forme, mais peut être facilement modifié pour fonctionner sur n'importe quel moteur JavaScript.

--- Vieux-réponse ci-dessous---

Google a publié Compilateur De Fermeture ce qui semble être la génération la plus petite des fichiers jusqu'à présent comme on le voit ici et ici

Auparavant, les différentes options ont été comme suit

Fondamentalement Packer fait un meilleur travail au moment de la compression , mais si vous allez gzip les fichiers avant de les envoyer sur le fil (ce qui devrait être fait) YUI Compressor obtient la plus petite taille finale.

Les tests ont été effectués sur jQuery code de la tva.

  • Original de la bibliothèque jQuery 62,885 octets , 19,758 octets après gzip
  • jQuery minimisé avec JSMin 36,391 octets , 11,541 octets après gzip
  • jQuery minimisé avec Packer 21,557 octets , 11,119 octets après gzip
  • jQuery minimisé avec YUI Compressor 31,822 octets , 10,818 octets après gzip

@daniel james mentionne dans les commentaires compressorrater ce qui montre Packer menant le tableau de la meilleure compression, donc je suppose que ymmv

YUI Compressor est le chemin à parcourir.Il a un grand taux de compression, est bien testé et est en usage parmi de nombreux top sites, et bien, personnellement recommandé par moi.

Je l'ai utilisé pour mes projets sans une seule erreur JavaScript ou le hoquet.Et elle a beau de la documentation.

Je n'ai jamais utilisé le code CSS correspondant à des fonctions de compression, mais ils existent. CSS compression fonctionne tout aussi bien.

Note:Bien que Dean Edwards est /packer/ permet d'atteindre un meilleur taux de compression que YUI Compressor, je suis tombé sur quelques erreurs JavaScript lors de son utilisation.

J'utilise ShrinkSafe le Dojo de projet - c'est exceptionnel parce qu'il utilise un interpréteur JavaScript (Rhino) pour traiter de trouver des symboles dans le code et la compréhension de leur portée, etc.ce qui permet de garantir que le code fonctionne quand il est à l'autre bout, contrairement à beaucoup de compression des instruments qui utilisent des regex pour faire la même chose (ce qui n'est pas fiable).

En fait, j'ai une tâche MSBuild dans un Projet De Déploiement Web dans ma solution Visual Studio qui exécute un script qui exécute à son tour l'ensemble de la solution JS fichiers par le biais de ShrinkSafe avant de nous déployer et il fonctionne très bien.

EDIT: Par ailleurs, "meilleur" est ouverte au débat, étant donné que les critères de la "meilleure" varie selon les besoins du projet.Personnellement, je pense que ShrinkSafe est un bon équilibre;pour certaines personnes qui pensent que la plus petite taille == le meilleur, il sera insuffisant.

EDIT: Il est intéressant de noter que l'YUI compressor utilise aussi des Rhinocéros.

Essayez JSMin, a obtenu le C#, Java, C et autres ports et facilement disponible aussi.

Si vous utilisez Packer, il suffit d'aller loin, de la "redimensionner" variables d'option et gzip, le code résultant.Le base62 option est uniquement si votre serveur ne peut pas envoyer les fichiers gzip.Packer avec "redimensionner vars" obtient le meilleur taux de compression de l'YUI, mais peuvent introduire des bugs, si vous avez sauté un point-virgule quelque part.

base62 est fondamentalement un homme pauvre gzip, qui est pourquoi gzipping base62-ed code vous donne des fichiers plus gros que gzipping shrink-var-ed code.

JSMin en est une autre.

Dans la recherche de solution miracle, trouvé ce question.Pour Ruby on Rails http://github.com/sstephenson/sprockets

Voici le code source d'un HttpHandler qui fait que, peut-être que ça va vous aider

Ici est un YUI compressor script (Byuic) qui trouve toutes les css et js en bas d'un chemin et des compresses /(en option) dissimule eux.Agréable de s'intégrer dans un processus de construction.

bananascript.com utilisé pour me donner de meilleurs résultats.

KJScompress

http://opensource.seznam.cz/KJScompress/index.html

Kjscompress/csskompress est l'ensemble de deux applications (kjscompress un csscompress) pour supprimer la non-significative les espaces et les commentaires de fichiers contenant du JavaScript et du CSS.Les deux sont de ligne de commande pour les applications GNU/Linux système d'exploitation.

Js Écraser est un bon compresseur à utiliser après avoir minimisé.

J'utilise jscompressor.com comme chrome app.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top