54 votes

Qu'est-ce que vous utilisez pour réduire et compresser les bibliothèques JavaScript?

Qu'est-ce que vous utilisez pour réduire et compresser les bibliothèques JavaScript?

42voto

Tim Down Points 124501

J'ai utilisé YUI Compressor pour une longue période et n'ont pas eu de problèmes avec elle, mais nous avons récemment commencé à utiliser Google Closure compiler et a eu un certain succès avec elle. Mes impressions de ce jour:

  • Généralement, il surpasse YUI Compressor, en termes de taille de fichier de réduction. Par une petite quantité sur le mode simple, et par beaucoup sur le mode avancé.
  • Mode Simple a jusqu'à présent été aussi fiable que YUI Compressor. Rien, j'ai de la fed, il a montré à tous les problèmes.
  • Avancé "compilation" le mode est idéal pour certains scripts, mais la spectaculaire réduction de la taille de votre script se fait au détriment de beaucoup de se mêler avec votre code qui représente une vraie chance de le casser. Il y a des façons de traiter certains de ces problèmes et la compréhension de ce qu'il fait peut aller un long chemin pour éviter les problèmes, mais de manière générale, j'évite d'utiliser ce mode.

J'ai déménagé à l'aide de Google Closure compiler en simple "compilation" de mode, car il surpasse légèrement YUI Compressor, en général. Je l'ai utilisé beaucoup moins que ce que j'ai YUI Compressor, mais de ce que j'ai vu jusqu'à présent, je le recommande.

Un autre que je n'ai pas encore essayer, mais prometteur, est Mihai Bazon de UglifyJS.

34voto

jonstjohn Points 23326

J'utilise YUI Compressor . Semble faire le travail bien fait!

23voto

haylem Points 11504

Vous avez un troupeau de possibilités ici:

De mon expérience personnelle, je recommande que vous utilisez le Dojo SDK pour construire une version personnalisée, vous pouvez ensuite configurer pour utiliser leur habitude ShrinkSafe compilateur, ou Google Fermeture, dont ils prennent désormais en charge aussi bien.

En termes de compression, je pense que Google Fermeture est celle donnant les meilleurs résultats pour moi jusqu'à présent, cependant, je suis généralement satisfait de ShrinkSafe et c'est un peu plus âgé et le plus robuste, tandis que la Fermeture Compilateur ressemble un peu à un petit nouveau sur le bloc (qui vos parties prenantes peuvent ne pas être trop friand, par exemple).

Certaines personnes ne jurent que par le YUI Compressor. Personnellement, je ne peut pas vraiment se porter garant pour elle.

Si vous avez maintenant la question est de compresser les bibliothèques , et pas seulement votre propre code JavaScript, il est évident qu'elle devient vraiment plus impliqués, car vous en aurez besoin pour la plupart de ces outils pour exporter les symboles ne doivent pas être renommés ou supprimés. La plupart des bons compresseurs va supprimer les fonctions qu'ils pensent sont inutilisés - c'est souvent le cas dans une bibliothèque, si ce n'est pas lié à un projet, évidemment - et de changer les noms pour les rendre plus court et d'utiliser moins de personnages - aussi un problème que vous voulez bien sûr une API publique pour ne pas être altéré.

Vous pouvez trouver d'autres fils sur ce sujet et trouver des informations dans les outils de la documentation de soutien. Vous pouvez également avoir un coup d'oeil à JSBuilder2, une sorte de pendentif au Dojo de l'outil de génération (donc, à l'aide de ShrinkSafe ou de la Fermeture du Compilateur) pour ExtJS (à l'aide de l'YUI compressor).

(Désolé, d'être une nouvelle SORTE de l'utilisateur, je ne peux pas ajouter plus d'un lien, donc je ne peut pas accéder directement aux outils.)

EDIT: en ce qui concerne les préoccupations exprimées dans les réponses à certaines questions que la compression peut introduire des bugs et qu'il rend le débogage plus facile que le code n'est pas de déformation: oui, c'est une préoccupation légitime. Cependant:

  • vous obtiendrez une amélioration très significative en termes de bande passante si vous utilisez un minifier, même avec la compression gzip activée (et vous pouvez apprendre à tirer parti de la compression gzip, faire du compresseur la vie plus facile
  • vous devriez juste le goût de votre code de débogage et de mode de production pour assurer le comportement est identique. Je veux dire, c'est une partie de votre travail en tant que bien...
  • certains de ces compresseurs ont été autour pendant un certain temps et ne sera pas vraiment introduire un bug dans votre code. Ils sont vraiment tout simplement ré-organiser les choses et la substitution de chaînes, vraiment.
  • certains compresseurs (par exemple le dojo système de construction) viennent avec des options pour vous permettre de produire à la fois compressé et non compressé et de sortie, de sorte que vous pouvez ensuite activer les différents modes de débogage et de production, en utilisant les paramètres de la requête, par exemple.

12voto

Christoph Points 64389

Je ne minimise pas du tout JavaScript: la compression gzip me convient assez bien et présente l'avantage supplémentaire que les messages d'erreur seront toujours utiles.

11voto

kosoant Points 5333

Moi aussi j'utilise YUI Compressor. J'ai une tâche de fourmi comme celle-ci que j'utilise dans mes projets:

 <!--
YUI Compressor tasks 
http://www.julienlecomte.net/yuicompressor/README
-->
<property name="yuicompressor.jar"
           value="C:/devlibs/yuicompressor-2.2.4/build/yuicompressor-2.2.4.jar"/>

<target name="js.compress">
	<!-- Create min directory under js direcrtory if it doesnt exist -->
	<mkdir dir="${js-directory}/min" />

    <apply verbose="true" executable="java" parallel="false" failonerror="true">
        <fileset dir="${js-directory}" includes="*.js"/>
        <arg line="-jar"/>
        <arg path="${yuicompressor.jar}"/>
        <srcfile/>
        <arg line="-o"/>
        <mapper type="glob" from="*.js" to="${js-directory}/min/*-min.js"/>
        <targetfile/>
    </apply>
</target>
 

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