Pregunta

Estoy tratando de compilar un montón de plantillas de manillares en un solo archivo compilado usando HNT.Tengo una serie de carpetas que contienen cada una de las 4 plantillas cada una y quiero compilarlas en un solo archivo.Con carpetas como:

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

esencialmente quiero ejecutar el comando:

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

He intentado lo siguiente, pero parece que solo parece incluir 1 archivo en el archivo JS de salida.

<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>

Además, extrañamente, el archivo de salida comienza con un carácter de espacio, con el que parece que no puedo deshacerme.Cualquier ayuda sería muy apreciada.

¿Fue útil?

Solución 4

Terminé utilizando una tarea <concat>, para crear un archivo de todas las plantillas y ejecutar el ejecutable una vez en ese archivo.

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

Otros consejos

Después de buscar mucho en StackOverflow y, lo que es más importante, leer los documentos, se me ocurrió esta solución que funciona.

<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>

Prueba:

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

en lugar de:

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

Use la tarea <script> donde puede incrustar el código JavaScript o Groovy que hace el trabajo de iteración.Es una buena práctica llamar a algunos scripts shorts como ayuda para tales problemas, ya que generalmente son más expresivos que las de las notaciones difíciles de condición de bucle XML.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top