gruntjs - tutorial - gulp js
Mapeo dinĂ¡mico para destinos en grunt.js (1)
Tengo un proyecto con varias subcarpetas que contienen archivos JavaScript que deseo concatenar. ¿Cuál sería la forma correcta de configurarlos?
p.ej.
fuente: /modules/$modulename/js/*.js (varios archivos) dest: /modules/$modulename/js/compiled.js
Entonces, lo que quiero hacer es compilar archivos js de un recuento de subcarpetas desconocido / no configurado ($ nombre de módulo) en un archivo por subcarpeta.
es posible?
La siguiente función (construida después de las instrucciones de hereandnow78) hace el trabajo:
grunt.registerTask(''preparemodulejs'', ''iterates over all module directories and compiles modules js files'', function() {
// read all subdirectories from your modules folder
grunt.file.expand(''./modules/*'').forEach(function(dir){
// get the current concat config
var concat = grunt.config.get(''concat'') || {};
// set the config for this modulename-directory
concat[dir] = {
src: [dir + ''/js/*.js'', ''!'' + dir + ''/js/compiled.js''],
dest: dir + ''/js/compiled.js''
};
// save the new concat config
grunt.config.set(''concat'', concat);
});
});
después de eso puse preparemodulejs antes del trabajo concat en mi configuración predeterminada.
probablemente necesitará codificar su propia tarea, en la que repita en sus subcarpetas y agregue dinámicamente a su configuración de concat.
grunt.registerTask("your-task-name", "your description", function() {
// read all subdirectories from your modules folder
grunt.file.expand("./modules/*").forEach(function (dir) {
// get the current concat config
var concat = grunt.config.get(''concat'') || {};
// set the config for this modulename-directory
concat[dir] = {
src: [''/modules/'' + dir + ''/js/*.js'', ''!/modules/'' + dir + ''/js/compiled.js''],
dest: ''/modules/'' + dir + ''/js/compiled.js''
};
// save the new concat configuration
grunt.config.set(''concat'', concat);
});
// when finished run the concatinations
grunt.task.run(''concat'');
});
ejecuta esto con:
$ grunt your-task-name
Este código no está probado, pero creo que debería hacer su trabajo.
SUGERENCIA: puede poner este código en un archivo externo e incluirlo en su archivo de registro de grietas si desea mantener su archivo de archivos de gruñido pequeño, por ejemplo, colocarlo en un archivo dentro de un directorio de tareas:
module.exports = function(grunt) {
grunt.registerTask("your-task-name", "your description", function() {
...
});
};
y cargue en su gruntfile:
grunt.loadTasks("./tasks");