tutorial started serve grunt getting cli gruntjs

gruntjs - started - npm install grunt-cli



gruñido integrador con hormiga (3)

¿Hay buenos tutoriales para integrar gruñido con hormiga? Nuestra compilación actual utiliza ant porque somos una tienda de Java. Sin embargo, el front-end está comenzando a convertirse en un ciudadano de primera clase, y estamos examinando el uso de node y grunt para la construcción del front-end. Necesito integrar la compilación de front-end con la compilación de hormigas. Necesito saber cómo normalizar los códigos de salida para todas mis tareas personalizadas, así como las tareas integradas de Grunt y limitar la salida de la consola a estos códigos predefinidos cuando las tareas de Grunt son llamadas por ant. Cualquier ayuda sería muy apreciada.


Grunt puede llamar a la línea de comandos, por lo que puede crear fácilmente varias tareas en grunt que no hacen más que ejecutar una tarea ant a través del shell.

La biblioteca grunt-shell facilita especialmente la ejecución de comandos externos desde una tarea grunt: https://github.com/sindresorhus/grunt-shell

Sin embargo, ya que está hablando de códigos de salida personalizados, probablemente tendrá que escribir su propia tarea grunt personalizada que ejecuta un comando de shell y luego mira el código de respuesta (tal vez utilizando el ayudante grunt.helpers.spawn ): https://github.com/gruntjs/grunt/blob/master/docs/api_utils.md#gruntutilsspawn

¿Mi consejo? Mi organización recientemente pasó por lo mismo y, si es posible, es mejor simplemente romper con la hormiga y deshacerse de ella por completo para sus proyectos relacionados con JavaScript.

Grunt tiene una biblioteca de complementos tan creciente y útil que me sorprendería si no pudiera duplicar sus archivos de compilación de hormigas y crear una solución 100% javascript.


Podrías usar esta macro:

<macrodef name="exec-node"> <attribute name="module" description="The name of the NodeJS module to execute"/> <attribute name="failonerror" default="true" description="Fail if the exit code is not 0"/> <element name="args" implicit="yes" description="Argument to pass to the exec task"/> <sequential> <exec executable="cmd.exe" failonerror="@{failonerror}" osfamily="winnt"> <arg line="/c @{module}" /> <args/> <!-- Windows cmd output workaround: http://.com/a/10359327/227349 --> <!-- Forces node''s stderror and stdout to a temporary file --> <arg line=" &gt; _tempfile.out 2&lt;&amp;1"/> <!-- If command exits with an error, then output the temporary file --> <!-- to stdout delete the temporary file and finally exit with error level 1 --> <!-- so that the apply task can catch the error if @failonerror="true" --> <arg line=" || (type _tempfile.out &amp; del _tempfile.out &amp; exit /b 1)"/> <!-- Otherwise, just type the temporary file and delete it--> <arg line=" &amp; type _tempfile.out &amp; del _tempfile.out &amp;"/> </exec> <exec executable="@{module}" failonerror="@{failonerror}" osfamily="unix"> <args/> </exec> </sequential> </macrodef>

Y puedes llamar a cualquier comando: ejemplo:

<target name="jshint"> <exec-node module="grunt"> <arg value="jshint" /> </exec-node> </target>

funciona como un amuleto: también garantiza que el stderr también se imprima, lo cual es un problema común cuando se dice grunt.


puede usar http://abc.tools.qafoo.com/ que incluye un módulo npm * 1)

Lo único que necesitas es un objetivo personalizado como:

… <target name="-mm:compile:main~hooked" extensionOf="-compile:main~hook" depends=" -my-compile-npm-hook " > <target name="-my-compile-npm-hook" > <echo>install local grunt-cli</echo> <antcall target="npm:install"> <param name="in.npm.package.name" value="grunt-cli" /> </antcall> </target> …

después de eso, puede ejecutar grunt en .npm/node_modules/.bin/ directory alias ${npm.local.modulesdir}/.bin/ ^^ No se pierda la inclusión o definición de propiedades desde src/main/resources/extensions/npm/npm.properties

* 1): desafortunadamente con la versión actual de node.js