2012-09-11 13 views
8

Grunt está eliminando los helpers y esto ya sucedió en grunt-contrib.Cómo llamar tareas desde el código en Grunt si los ayudantes se han ido

Sin embargo, tengo un archivo Grunt que se basa en algunas tareas personalizadas que llaman a algunos de esos ayudantes. Sin ayudantes se rompe. Me pregunto cuál debería ser la forma correcta de reemplazarlos.

Lo consigo llamando las tareas directamente de alguna manera, pero no estoy seguro de cómo. Un ejemplo sería de mucha ayuda, ya que la documentación de Grunt no está actualizada.

Gracias.

Respuesta

9

bien después de una investigación y la ayuda de los mantenedores de Ronco-contrib, Reescribí esa tarea que tengo:

grunt.registerMultiTask('multicss', 'Minify CSS files in a folder', function() { 
    grunt.file.expandFiles(this.data).forEach(function(file) { 
     var minified = grunt.helper("mincss", grunt.file.read(file)); 
     grunt.file.write(file, minified); 
     grunt.log.writeln("Minified CSS "+file); 
    }); 
}); 

En esto:

grunt.registerMultiTask('multicss', 'Minify CSS files in a folder', function() { 
    var count = 0; 
    grunt.file.expandFiles(this.data).forEach(function(file) { 
     var property = 'mincss.css'+count+'.files'; 
     var value = {}; 
     value[file] = file; 
     grunt.config(property, value); 
     grunt.log.writeln("Minifying CSS "+file); 
     count++; 
    }); 
    grunt.task.run('mincss'); 
}); 

Ningún otro cambio necesario en la configuración archivo. El nuevo fragmento de código hace uso de la tarea en sí en lugar del asistente que se ha ido.

Este podría no ser el mejor enfoque y Grunt 0.4.0 podría cambiar el juego de nuevo, pero funciona ahora mismo con Grunt 0.3.15 y grunt-contrib 0.2.

+1

También estoy muy curioso sobre la pregunta y actualmente estoy haciendo algo similar, ¡pero eso me parece tan ineficiente! En lugar de hacer algo como 'var result = grunt.task.run ('mincss', ['style1.css', 'style2.css', ...])' ir y * hackear * la configuración de la tarea y luego ejecutar de la manera habitual. Si está tomando el camino de preparar datos para otras tareas dinámicamente, creo que debe haber una mejor manera de hacerlo. ¿Podría vincular su discusión con los mantenedores de contribución de gruido, si es posible? –

+0

Encontrado, aquí está el enlace a la discusión: https://github.com/gruntjs/grunt-contrib/issues/118 –

Cuestiones relacionadas