Esistono buoni tutorial per integrare il grunt con la formica? La nostra attuale build usa ant perché siamo un negozio Java. Tuttavia, il front-end sta iniziando a diventare un cittadino di prima classe, e stiamo esaminando l'uso di node e grunt per la build del front-end. Ho bisogno di integrare la build front-end con la formica. Ho bisogno di sapere come normalizzare i codici di uscita per tutte le mie attività personalizzate così come le attività incorporate nel grunt e limitare l'output della console a questi codici predefiniti quando i task grunt vengono chiamati dalla formica. Qualsiasi aiuto sarebbe molto apprezzato.grunt integratore con formica
risposta
Grunt può chiamare alla riga di comando, in modo da poter creare facilmente diverse attività in grunt che non fanno altro che eseguire un task ant sulla shell.
La biblioteca grunt-shell
lo rende particolarmente facile da eseguire comandi esterni da un'attività grugnito: https://github.com/sindresorhus/grunt-shell
Dal momento che si sta parlando di codici di uscita personalizzato, anche se, probabilmente dovrete finire per scrivere il proprio grugnito personalizzato compito che esegue un comando di shell e poi guarda il codice di risposta (forse usando l'helper grunt.helpers.spawn
): https://github.com/gruntjs/grunt/blob/master/docs/api_utils.md#gruntutilsspawn
Il mio consiglio? Il mio organization recently went through the same thing ed è meglio se possibile solo fare una pausa dalla formica e sbarazzartene interamente per i tuoi progetti relativi a JavaScript.
Grunt ha una libreria di plug-in così utile e in crescita sarei sorpreso se non fosse possibile duplicare i file di formica e creare una soluzione javascript al 100%.
si potrebbe utilizzare http://abc.tools.qafoo.com/ che comprende un modulo NPM * 1)
L'unica cosa che è quindi necessario è un obiettivo personalizzato come:
…
<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>
…
dopo che si potrebbe correre grugnito nei alias directory .npm/node_modules/.bin/
${npm.local.modulesdir}/.bin/
^^ non perdere per includere o definire oggetti di src/main/resources/extensions/npm/npm.properties
* 1): unfortunatly buggy con l'attuale versione node.js
È possibile utilizzare questa 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://stackoverflow.com/a/10359327/227349 -->
<!-- Forces node's stderror and stdout to a temporary file -->
<arg line=" > _tempfile.out 2<&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 & del _tempfile.out & exit /b 1)"/>
<!-- Otherwise, just type the temporary file and delete it-->
<arg line=" & type _tempfile.out & del _tempfile.out &"/>
</exec>
<exec executable="@{module}" failonerror="@{failonerror}" osfamily="unix">
<args/>
</exec>
</sequential>
</macrodef>
E si può chiamare qualsiasi comando: Esempio:
<target name="jshint">
<exec-node module="grunt">
<arg value="jshint" />
</exec-node>
</target>
funziona come un fascino: garantisce anche la stderr è stampato anche, che è un comune problema quando si chiama grunt.
- 1. parso json con formica
- 2. Grunt config con es6
- 3. Evento Grunt Watch con copia Grunt solo per file modificati
- 4. Arresto di un'attività java parallela con formica
- 5. edificio app android con solo formica
- 6. Problemi con l'impostazione del classpath nella formica
- 7. Posso usare Grunt con TFS?
- 8. Livertoad grunt con l'applicazione node.js
- 9. Grunt usemin con i modelli
- 10. AngularJS html5Mode utilizzando Grunt connect. grunt 0.4.5
- 11. formica replaceregex sostituire multilinea
- 12. Problema con la compilazione di un progetto gwt con formica
- 13. Come eseguire grunt 0.4. * Senza grunt-cli
- 14. unix2dos (o dos2unix) nella formica
- 15. Grunt a TypeScript su JavaScript con uglify
- 16. Come usare la stylelint con Grunt?
- 17. Passare la variabile a SASS con Grunt
- 18. grunt-contrib-watch con LiveReload non funziona
- 19. Come analizzare HTML in DOM con Grunt
- 20. Impossibile eseguire lavori con grunt-contrib-compass
- 21. Concatenazione e modifica di RequireJS con Grunt
- 22. Specificare modulo QUnit quando corro con Grunt
- 23. Grunt: argomento con i due punti
- 24. Chiamata di destinazione della formica
- 25. Come generare javadoc con formica, per un progetto esistente?
- 26. post http con formica per il caricamento di file
- 27. Ant non ricostruire applicazione Android con `debug formica install`
- 28. Creazione di un contenitore di bundle con formica
- 29. formica più directory di origine con risorse copiati
- 30. concatenare dinamicamente i file XML con formica e XSLT
Sono anche in un negozio Java e questa è una vendita difficile. Anche se il front-end è sempre più importante per noi, è improbabile che passiamo a JS come linguaggio di costruzione per il codice lato server. Un approccio più realistico sembra essere quello di invocare il grunt tramite un task ant. D'altra parte non vedo nessuno che lo faccia così ... – carbontax