9
votes

Comment utiliser le compresseur YUI dans le script de construction de fourmis pour JavaScript et CSS

Après quelques jours, recherchez comment utiliser le compresseur YUI dans un script de construction de fourmis, je l'ai enfin terminé. De nombreux anciens exemples (<2010) existent pour créer une tâche de fourmi et utiliser cela dans votre script de construction, mais qui était surchargé pour moi.

De nombreux exemples sont également anciens et nécessitent une plus grande connaissance de la fourmi ou de la configuration des tâches de fourmis. La solution ci-dessous est simplement ce qui était rapide, facile et efficace pour moi.


0 commentaires

5 Réponses :


17
votes

Le ci-dessous a été ajouté à l'une de mes balises code> pour avoir tous les fichiers JavaScript dans un seul répertoire compressé. Ces fichiers conservent leur nom d'origine. Pour ce faire pour que CSS, changez simplement le «JS» sur «CSS» et mettez à jour les chemins en conséquence.

Ceci a été effectué avec YUI Compressor 2.4.7 et j'exécute le script de création de fourmis dans Eclipse Juno sans aucune modification des chemins de classe. ou d'autres modifications des paramètres. P>

<!-- Minimizing Javascript files -->
    <echo message="Compressing Javascript files at location: ${build.root}/resources/js/*.js" />
    <java jar="c:/dev/lib/yuicompressor-2.4.7/build/yuicompressor.jar" fork="true">
        <arg value="${build.root}/resources/js/*.js" /> <!-- input path for JS files -->
        <!--<arg value="-v" /> --><!-- Turn on verbose -->
        <arg value="-o" />
        <arg value="'.js$:.js'" />
        <arg value="${build.root}/resources/js/*.js" /> <!-- output path for JS files -->
        <classpath>
            <pathelement location="c:/dev/lib/yuicompressor-2.4.7/build/yuicompressor.jar"/>
        </classpath>
    </java>


9 commentaires

Comment compresser tout fichier .js dans un fichier .js? ? Parce que ci-dessus, le script comprime .js fichiers dans leur propre fichier ...


Il donne FilenotfoundException pour - /Home/shwetanka /weprojects/webapp/webapp/content/js/mobile/*.j s Le chemin existe.


@Shwetankaka Si vous avez une question, vous devez créer votre propre thread de questions et voir cette réponse indiquant le problème.


J'ai été heureusement / malheureusement donné mon script de fourmis, cependant, après un certain temps de travail sur le projet, le compresseur YUI dépose la construction du projet en raison du fichier JS. Y a-t-il un moyen de montrer / enregistrer le fichier coupable?


@ DarkStar1 Malheureusement, je ne connais pas d'option de journal qui vous indique le nom de fichier du fichier en cours de compression. Vous pouvez essayer d'exécuter votre bande de fourmis et spécifier explicitement le nom du fichier JavaScript au lieu de "* .js" comme indiqué ci-dessus.


classePath semble être un peu superflu, sinon ça a l'air bien


Obtenir java.io.filenotfoundException: /var/lib/jenkins/workspace/register/public/js/*.js (aucun fichier ou répertoire de ce type) avec yui compresseur 2.4.7 sur Ubuntu.


Comment dois-je modifier la solution fournie pour exclure le fichier déjà disponible "" .min.js "'de se compresser à nouveau. J'ai essayé d'ajouter "exclut" l'attribut avec la valeur comme "" * /. Min.js "'à' << FileNet> 'mais cela ne semble pas fonctionner.


Hey, je ne suis pas sûr de la réponse à votre question, mais je me demande si vous rencontrez des problèmes de cause par une tentative de compresser le fichier plus loin?



5
votes

J'utilise la solution suivante pour minimiser les fichiers en place depuis que j'ai obtenu le FilenotfoundException avec la réponse précédente.

Pour minimiser CSS, remplacer js avec avec < Code> CSS ci-dessous. xxx


1 commentaires

J'avais le même problème avec un script ANT en fonction de celui du projet HTML5BOLERPLET. Votre solution d'aller à un répertoire temporaire semble d'abord l'avoir corrigé.



0
votes

J'utiliserais cette tâche ant: http://code.google .COM / P / YUI-Compressor-ant-Tâche / ou celui-ci: https: //github.com/parambirs/ant-yui-compresseur qui semble naté que celui applicable.


1 commentaires

Très belle solution. La configure semble très simple en avant.



2
votes

J'ai essayé le code de Victor. Il n'y avait aucun répertoire temporaire effectivement nécessaire. J'ai utilisé ce code et cela a fonctionné pour moi.

xxx


2 commentaires

Comment dois-je modifier la solution fournie pour exclure le fichier déjà disponible "" .min.js "'de se compresser à nouveau. J'ai essayé d'ajouter l'attribut "exclut" avec la valeur comme "" /. Min.js "ainsi que" ** / min "à" "mais cela ne semble pas fonctionner.


C'est "exclure" et non "exclut".



0
votes

Vous pouvez compresser tous les fichiers JS disponibles dans un dossier particulier sans copier dans le dossier TEMP.

<property name="js.source" value="js/combine" />    
<property name="js.target" value="js/compress" />
<fileset dir="${yuicompressor.lib}">
        <include name="yui/yuicompressor-2.4.z8.jar"/>
</fileset>
<target name="minifyjs" description="compress the JS files">
    <delete includeEmptyDirs="true">
      <fileset dir="${js.target}" includes="**/*" defaultexcludes="no"/>
    </delete>
    <apply executable="java" parallel="false" verbose="true" failonerror="yes">
        <fileset dir="${js.source}" includes="**/*.js" excludes="**/*-min.js, **/*.min.js"/>
          <arg line="-jar"/>
          <arg path="${yuicompressor.lib}" />
          <srcfile/>
          <arg line="-o"/>
          <targetfile/>
          <mapper type="glob" from="*.js" to="${js.target}/*.js"/>
          <arg line="--charset"/>
          <arg line="utf-8"/>
    </apply>
</target>


0 commentaires