Question

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

Était-ce utile?

La solution

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

Autres conseils

Je l'ai utilisé YUI Compresseur depuis longtemps et ont eu aucun problème avec elle , mais ont récemment commencé à utiliser Google Closure Compiler et eu un certain succès avec elle. Mes impressions jusqu'à présent:

  • Il surclasse généralement compresseur YUI en termes de réduction de la taille du fichier. Par une petite quantité en mode simple, et par beaucoup en mode avancé.
  • Mode simple a jusqu'à présent été aussi fiable que YUI compresseur. Rien que je l'ai nourri, il a montré des problèmes.
  • Mode avancé « compilation » est grande pour certains scripts, mais la réduction de la taille spectaculaire de votre script se fait au détriment de beaucoup de se mêler avec votre code qui signifie une bonne chance de le casser. Il y a façons de traiter certains de ces problèmes et comprendre ce que qu'il fait peut aller un long chemin pour éviter les problèmes, mais j'éviter en général en utilisant ce mode.

Je suis déplacé vers l'utilisation de Google Fermeture du compilateur en mode simple « compilation », car il surclasse légèrement YUI compresseur en général. Je l'ai utilisé beaucoup moins que moi 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 les UglifyJS de Mihai Bazon .

Vous avez un troupeau de possibilités ici:

D'après mon expérience personnelle, je vous recommande d'utiliser le Dojo SDK pour construire une version personnalisée, que vous pouvez ensuite à configurer tour soit utiliser leur compilateur habituel ShrinkSafe ou Google fermeture, qu'ils soutiennent maintenant et .

En ce qui concerne la compression, je pense que Google Closure est celui qui donne les meilleurs résultats pour moi jusqu'à présent, mais je suis généralement satisfait de ShrinkSafe et il est un peu plus vieux et plus robuste, alors que la fermeture du compilateur semble un peu d'un petit nouveau sur le bloc (que vos parties prenantes pourraient ne pas être trop friand, par exemple).

Certaines personnes ne jurent que par le compresseur YUI bien. Je peux porter garant personnellement pas vraiment pour elle.

Maintenant, si vous la question était de compresser bibliothèques et pas seulement votre propre code JavaScript, il devient évidemment vraiment plus impliqué, car vous aurez besoin pour la plupart de ces outils pour exporter les symboles qui ne devraient pas être renommé ou dépouillé. La plupart des compresseurs décents enlèveront fonctions qu'ils pensent inutilisés - souvent le cas dans une bibliothèque, sinon lié à un projet, évidemment - et changer les noms pour les rendre plus courtes et utiliser moins de caractères - aussi un problème que vous voulez évidemment public API pour ne pas être falsifié.

Vous pouvez trouver d'autres discussions sur ce sujet et ainsi trouver des informations dans la documentation de support des outils. Vous pouvez également consulter JSBuilder2 , une sorte de pendentif à l'outil de construction de Dojo ( ainsi, en utilisant ShrinkSafe ou la fermeture du compilateur) pour ExtJS (en utilisant le compresseur YUI).

(Désolé, étant un nouvel utilisateur SO, je ne peux pas ajouter plus d'un lien, donc je ne peux pas relier directement aux outils.)

EDIT: en ce qui concerne les préoccupations exprimées dans certaines réponses que la compression pourrait introduire des bugs et qu'il rend le débogage plus facile que le code n'est pas mutilée: oui, c'est une préoccupation valable. 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é (et vous pouvez apprendre à tirer parti de la compression gzip en rendant la vie plus facile
  • du compresseur
  • vous devriez juste goûter votre code dans le débogage et le mode de production pour assurer le comportement est identique. Je veux dire, ça fait partie de votre travail et ...
  • certains de ces compresseurs ont été autour pendant un certain temps et introduira pas vraiment des bugs dans votre code. Ils sont vraiment juste réorganisant les choses et son remplacement par des chaînes, vraiment.
  • certains compresseurs (par exemple le système de construction de dojo) viennent avec des options pour vous permettre de produire à la fois un comprimé et une sortie non compressée, de sorte que vous pouvez activer différents modes de mise au point et la production, en utilisant les paramètres de la requête par exemple.

Je ne minimisez pas JavaScript du tout. Compression gzip est assez bon pour moi et a l'avantage supplémentaire que les messages d'erreur seront toujours utiles

J'utilise trop YUI Compressor. J'ai une tâche fourmi comme ça que je l'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>

emballeur Dean Edward réalise de très bons taux de compression. Il dispose d'implémentations de ligne de commande qui lui permet d'être utilisé dans un procédé d'intégration continue.

UglifyJS est un nouveau.

  

UglifyJS mieux que YUI comprime   Compresseur et à peu près au même niveau   Google fermeture du compilateur. Pour   par exemple, la version compressée de   jQuery de la fermeture Google   Compilateur est seulement 403 octets plus petit   que la version produite par UglifyJS   - impressionnant! UglifyJS est aussi le plus rapide à exécuter par un long shot, en battant   Fermeture de plus de 6 secondes

     

En outre, le code produit par   UglifyJS est plus sûr que le code   Fermeture génère. Par exemple,   La fermeture ne sait pas comment faire face à   eval ou {} - il enregistre juste une erreur   et continue de renommer les variables   en tous cas. Ceci, évidemment, conduit à   code cassé. UglifyJS n'a pas   ce problème.

Plus d'informations peuvent être trouvées ici: http://badassjs.com/post / 971960912 / uglifyjs-a-fast-new-javascript-compresseur pour-node-js

Voici une solution de Microsoft que vous pouvez intégrer dans Visual Studio pour rapetisser les fichiers automatiquement lorsque vous créez votre projet.

Pour installer:

Télécharger le msi de: http://aspnet.codeplex.com/releases/view/40584

Vous devrez peut-être redémarrer votre ordinateur après son fini.

Utilisation:

Modifiez votre fichier .csproj et inclure ce qui suit à la fin du fichier (mais avant la balise </Project>):

<Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\ajaxmin.tasks" />

<Target Name="AfterBuild">
    <ItemGroup>
        <JS Include="**\*.js" Exclude="**\*.min.js;Scripts\*.js" />
        <CSS Include="**\*.css" Exclude="**\*.min.css" />
    </ItemGroup>
    <AjaxMin 
    JsSourceFiles="@(JS)"
    JsSourceExtensionPattern="\.js$"
    JsTargetExtension=".min.js"
    CssSourceFiles="@(CSS)"
    CssSourceExtensionPattern="\.css$"
    CssTargetExtension=".min.css"/>
</Target>

Maintenant, quand vous construisez votre projet, tous les fichiers CSS et js qui ne se terminent pas par .min.js, .min.css sera minified (Voir la « Exclure » attribuer à exclure d'autres fichiers d'être minified).

http://code.google.com/p/jsmin-php/

Le bon vieux Doug Crockford :-) La beauté est que le contrôle du cache, vous pouvez obtenir une compression somelovely automatique uniquement lorsqu'il est nécessaire. Ou dans l'un de mes projets je viens de sortir les fichiers compressés / gzip et les supprimer quand je fais un changement. Pour un environnement de développement, je juste ne pas » appeler le script minification.

J'utilise un script simple wrapper (3-4 ligne) autour JavaScript :: Minifier :: XS .

Voici un article qui décrit comment utiliser YUI Compressor pour minimiser les fichiers lors de la construction: Compresser les fichiers JS dans le cadre de votre processus de construction

J'utilise JavaScript :: Minifier perl. Il fonctionne très bien et vous pouvez par exemple remplacer quelques phrases en utilisant Perl.

http://caja.appspot.com/tools/index fait tout trois HTML / CSS / JS.

https://jawr.dev.java.net/ est excellent pour minification et versioning

Il y a un très bon compresseur en ligne:

http://javascriptcompressor.com/

Vous pouvez également réduire les variables, si vous voulez encore plus compresed.

it helps

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