Quel est le meilleur compresseur JavaScript disponible? Je recherche un outil qui:
- est facile à utiliser
- a un taux de compression élevé
- Produire des résultats finaux fiables (ne gâche pas le code)
Quel est le meilleur compresseur JavaScript disponible? Je recherche un outil qui:
Réponses:
J'ai récemment publié UglifyJS , un compresseur JavaScript qui est écrit en JavaScript (fonctionne sur la plate-forme NodeJS Node.js , mais il peut être facilement modifié pour fonctionner sur n'importe quel moteur JavaScript, car il n'a pas besoin de composants Node.js
internes). C'est beaucoup plus rapide que YUI Compressor et Google Closure , il compresse mieux que YUI sur tous les scripts sur lesquels je l'ai testé, et c'est plus sûr que Closure (sait gérer "eval" ou "with").
Outre la suppression des espaces, UglifyJS effectue également les opérations suivantes:
foo["bar"]
en foo.bar
autant que possiblePS: Oh, ça peut aussi «embellir». ;-)
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 plate-forme NodeJS, mais peut être facilement modifié pour fonctionner sur n'importe quel moteur JavaScript.
--- Ancienne réponse ci-dessous ---
Google a publié Closure Compiler qui semble générer les plus petits fichiers à ce jour, comme on le voit ici et ici
Avant cela, les différentes options étaient les suivantes
Fondamentalement, Packer fait un meilleur travail lors de la compression initiale, mais si vous allez gzipper les fichiers avant de les envoyer sur le câble (ce que vous devriez faire), YUI Compressor obtient la plus petite taille finale.
Les tests ont été effectués sur du code jQuery btw.
@ daniel james mentionne dans le commentaire compressorrater qui montre Packer en tête du graphique dans la meilleure compression, donc je suppose que ymmv
\uxxxx
littéraux par défaut .. utilisez par exemple --charset UTF-8
(si vous êtes sûr que vous en informez le navigateur d'une manière ou d'une autre)
YUI Compressor est la voie à suivre. Il a un excellent taux de compression, est bien testé et est utilisé parmi de nombreux sites de premier plan et, bien, personnellement recommandé par moi.
Je l'ai utilisé pour mes projets sans une seule erreur JavaScript ou un hoquet. Et il a une belle documentation.
Je n'ai jamais utilisé ses capacités de compression CSS, mais elles existent également. La compression CSS fonctionne aussi bien.
Remarque: bien que / packer / de Dean Edwards atteigne un meilleur taux de compression que YUI Compressor, j'ai rencontré quelques erreurs JavaScript lors de son utilisation.
npm install packer
. (= D
J'utilise ShrinkSafe du projet Dojo - c'est exceptionnel car il utilise en fait un interpréteur JavaScript ( Rhino ) pour trouver des symboles dans le code et comprendre leur portée, etc., ce qui permet de garantir que le code fonctionnera lorsqu'il sortira le autre extrémité, par opposition à de nombreux outils de compression qui utilisent regex pour faire de même (ce qui n'est pas aussi fiable).
En fait, j'ai une tâche MSBuild dans un 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 via ShrinkSafe avant le déploiement et cela fonctionne très bien.
EDIT: Au fait, «meilleur» est ouvert au débat, puisque les critères de «meilleur» varieront 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 == mieux, ce sera insuffisant.
EDIT: Il est à noter que le compresseur YUI utilise également Rhino.
Si vous utilisez Packer, allez simplement loin dans l'option 'shrink variables' et gzip le code résultant. L'option base62 n'est valable que si votre serveur ne peut pas envoyer de fichiers gzippés. Packer avec 'shrink vars' réalise une meilleure compression du YUI, mais peut introduire des bogues si vous avez sauté un point-virgule quelque part.
base62 est fondamentalement le gzip d'un pauvre homme, c'est pourquoi gzipping de code base62-ed vous donne des fichiers plus gros que gzipping de code shrink-var-ed.
En cherchant une solution miracle, j'ai trouvé cette question. Pour Ruby on Rails http://github.com/sstephenson/sprockets
Voici le code source d'un HttpHandler qui fait cela, peut-être que cela vous aidera
bananascript.com me donnait les meilleurs résultats.
KJScompress
http://opensource.seznam.cz/KJScompress/index.html
Kjscompress / csskompress est un ensemble de deux applications (kjscompress et csscompress) pour supprimer les espaces et les commentaires non significatifs des fichiers contenant JavaScript et CSS. Les deux sont des applications de ligne de commande pour le système d'exploitation GNU / Linux.