10
votes

Script de fourmis pour compiler tout (CSS) moins de fichiers dans un dir et des sous-diodes avec Rhino

je veux compiler tout *. Moins code> dans un dossier spécifique et sous forme de subdirs avec moins rhino-1.1.3.js strong>.

Il existe un exemple sur GitHub pour le faire pour un fichier spécifique, qui fonctionne parfaitement. Mais je veux faire la même chose pour un dossier complet. J'ai essayé beaucoup, voici mon dernier essai Je ne suis même pas sûr que ce code fonctionnerait. P>

<project name="test" default="main" basedir="../../">
<property name="css.dir" location="public/css"/>
<property name="tool.less" location="bin/less/less-rhino-1.1.3.js"/>
<property name="tool.rhino" location="bin/tools/rhino/js.jar"/>
<macrodef name="lessjs">
    <attribute name="input" />
    <attribute name="output" />
    <sequential>
        <java jar="${tool.rhino}" fork="true" output="@{output}">
            <arg path="${tool.less}"/>
            <arg path="@{input}"/>
        </java>
        <echo>Lessjs: generated @{output}</echo>
    </sequential>
</macrodef>

<target name="main">
     <echo>compiling less css</echo>
     <fileset dir="${css.dir}" id="myfile">
          <filename name="**/*.less" />
     </fileset>
     <property name="lessfilename" refid="myfile"/>
     <propertyregex property="cssfilename"
          input="${lessfile}"
          regexp="^(.*)\.less$"
          replace="^\1\.css$" 
          casesensitive="true" />
     <lessjs input="lessfile" output="cssfilename"/>
</target>
</project>


0 commentaires

6 Réponses :


0
votes

Si Maven est une option pour vous, vous pouvez essayer WRO4J-Maven-Plugin ou WRO4J-Runner (qui est une utilitaire de ligne de commande).

En utilisant l'un de ceux-ci, tout ce que vous avez fait est de créer un descripteur de modèle de ressource (wro.xml): xxx

le reste sera géré par la bibliothèque WRO4J. Pas besoin de porter sur la façon dont Rhino travaille ou d'autres détails.

Disclaimer: Je travaille sur le projet WRO4J


2 commentaires

Je n'ai jamais utilisé Maven, j'en ai entendu beaucoup, peut-être que je devrais jeter un coup d'œil. Au moment, je compile chaque. Dossier sans fil.


Le WRO4J-Runner est un outil de ligne de commande qui peut être intégré à la fourmi.



0
votes

J'ai eu le même problème. J'ai développé une solution en utilisant ant-fort . Il s'attend à ce que tous vos fichiers. Sans que vous soyez dans un répertoire plat et d'être déplacé vers un autre répertoire plat. Il changera l'extension de fichier sur .CSS dans le processus. xxx


2 commentaires

Je n'ai pas de structure plate, mais merci d'avoir montré une solution avec Ant-fort. Il pourrait probablement être modifié pour travailler avec des sous-résidents. Je cherchais une solution avec une fourmi standard, mais je suppose que les awnsers donnés que cela n'est pas possible.


Quelle version du Rhino Js.jar avez-vous utilisé pour cela? Je tente la même chose maintenant et je ne trouvant aucune sortie. C'est-à-dire que rien écrit dans le fichier de sortie. Ont essayé également d'activer la sortie verbose à rhino (-v option comme décrit ici ) en vain. J'utilise le dernier rhinocéros, qui est 1_7R4.



0
votes

Je n'ai pas pu obtenir cela pour courir à l'aide d'un JDK 1.6 puisque la substance JavaScript a été intégrée au JDK. Le JDK a un JRunScript exécutable dans la distribution, mais lorsque j'essaie d'exécuter le fichier moins rhino.js, il ne reconnaît pas la fonction listifile () . Est-ce que quelqu'un a examiné cela. Sinon, je suis peut-être donner le moteur des Moteurs les moins élevés et l'améliorer pour comprendre les fichiers de fichiers.


1 commentaires

Matt, tout progrès à ce sujet? Avez-vous réussi à le faire fonctionner avec JRunScript ?



12
votes

Vous pouvez utiliser le pour inclure tous les fichiers moins doivent être compilés. Plus tard, vous pouvez utiliser pour marquer le fichier CSS CSS . xxx


4 commentaires

Salut Steven. C'est bien! Savez-vous si / comment je peux activer la compression?


Essayez d'ajouter avant pour transmettre les options de compresse sur moins de compilateur.


Steven, quelle version de Rhino Js.jar avez-vous utilisé ici?


C'est il y a deux ans, alors ne postulez probablement pas ici.



3
votes

Si quelqu'un d'autre vient à cette question récemment, comme je l'ai fait, ils peuvent constater que le fichier moins rhino-1.1.3.js code> donné dans les autres réponses ne fonctionne pas avec le dernier Version de Rhino (qui pour moi, à partir de maintenant, c'est 1.7R4 code> de MDN ). Mais la version 1.4.0 code> fait, qui peut être obtenue à partir de GitHub ici . Donc, l'extrait pertinent de mon build.xml code>, à l'aide de ces versions ultérieures, est affiché. Notez que je compile seulement un seul fichier .less code> à un seul fichier .CSS code>, aucune itération ou mappeurs n'est utilisé (mais évidemment, vous pouvez obtenir ceux de l'autre réponses). D'autres Tweaks que j'ai faits devaient fournir le fichier de sortie comme final arg à moins code> au lieu de capturer la sortie du processus préféré des fourmis et de supprimer la dépendance sur ant-contrib code> (non nécessaire pour le simple cas de fichier).

<property name="tool.rhino" value="build/lesscss/rhino1_7R4/js.jar" />
<property name="tool.less" value="build/lesscss/less-rhino-1.4.0.js" />
<property name="single-input-lesscss-file" value="/path/to/my/style.less" />
<property name="single-output-css-file" value="/output/my/style.css" />

<target name="compileLessCss" description="Compile the single less file to css">
    <sequential>
        <java jar="${tool.rhino}" fork="true">
            <arg path="${tool.less}" />
            <arg path="${single-input-lesscss-file}" />
            <arg path="${single-output-css-file}" />
        </java>
    </sequential>
</target>


0 commentaires

5
votes

J'ai pu créer une solution de travail avec l'aide d'un couple de réponses:

Script ANT pour compiler tous les fichiers (CSS) moins de fichiers dans un dir et des sous-résidents avec Rhino

Comment exécuter correctement moins -Rhino-1.6.3.3.js de la ligne de commande

J'ai dû télécharger moins 1.7.5 de Github et modifier la cible de fourmis pour ressembler à ceci. L'argument -f et moins JavaScript était la clé: xxx


0 commentaires