Domanda

Sto cercando di compilare un grappolo di modelli di manubri in un singolo file compilato usando Ant.Ho un numero di cartelle che ciascuna contengono circa 4 modelli ciascuno e voglio compilare questi in un unico file.Con cartelle come:

folder01
  |- templates
       |- f1_01.handlebars
       |- f1_02.handlebars
       |- f1_03.handlebars
       |- f1_04.handlebars
folder02
  |- templates
       |- f2_01.handlebars
       |- f2_02.handlebars
       |- f2_03.handlebars
       |- f2_04.handlebars
build.xml
.

Voglio essenzialmente eseguire il comando:

handlebars **/templates/*.handlebars -f compiled-templates.js
.

Ho provato quanto segue ma sembra solo includere 1 file nel file JS di uscita.

<macrodef name="handlebars">
    <attribute name="target"/>
    <sequential>
        <apply executable="${handlebars}" failonerror="false">
            <fileset dir="." includes="**/templates/">
                <include name="*.handlebars"/>
            </fileset>
            <arg value="-f compiled-templates.js"/>
        </apply>
    </sequential>
</macrodef>
.

Anche, stranamente, il file di output inizia con un carattere spaziale, che non riesco a sbarazzarsi di.Qualsiasi aiuto sarebbe molto apprezzato.

È stato utile?

Soluzione 4

Ho finito utilizzando un'attività <concat>, per creare un file da tutti i modelli e eseguire l'eseguibile una volta su quel file.

<concat destfile="all.handlebars" append="true">
    <fileset dir="." includes="**/templates/">
        <include name="*.handlebars"/>
    </fileset>
</concat>
.

Altri suggerimenti

Dopo aver cercato molto su Stackoverflow e, cosa più importante, leggendo i documenti che ho trovato questa soluzione che funziona.

<echo level="info" message="Pre Compiling templates" />
<apply parallel="true" failonerror="true" executable="node">
  <arg value="${webclient.dir.build}/node_modules/handlebars/bin/handlebars" />
  <srcfile />
  <fileset dir="${webclient}/app/templates" includes="**/*.handlebars"/>
  <arg line="-f ${webclient}/app/templates/handlebars.templates.js -m -a" />
</apply>
.

Prova:

...
<arg line="-f compiled-templates.js"/>
...
.

Invece di:

...
<arg value="-f compiled-templates.js"/>
...
.

Utilizzare l'attività <script> in cui è possibile incorporare il codice JavaScript o Groovy che funziona l'iterazione.È una buona pratica chiamare alcuni shorts script come aiuto per tali problemi in quanto sono solitamente più espressivi delle notevoli notazioni della condizione XML-Loop.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top