2012-09-11 20 views
8

Grunt正在刪除助手,這已經發生在grunt-contrib中。如果助手不見了,如何從Grunt中的代碼調用任務

但是我有一個Grunt文件依靠一些自定義任務調用其中的一些幫助程序。 沒有幫手它打破。我只是想知道什麼應該是正確的方法來取代這些。

我知道它將通過某種方式直接調用任務,但我不知道如何。因爲Grunt文檔還沒有更新,所以一個例子會有很大的幫助。

謝謝。

回答

9

確定後一些研究和咕嚕-的contrib的維護人員的幫助下,我改寫了這個任務,我有:

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); 
    }); 
}); 

進入這個:

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'); 
}); 

在配置不需要進行其他變化文件。新的代碼塊使用任務本身而不是已經消失的幫助程序。

這可能不是最好的方法,Grunt 0.4.0可能會再次改變遊戲,但它現在可以使用Grunt 0.3.15和grunt-contrib 0.2。

+1

我也很好奇這個問題,目前我正在做類似的事情,但對我來說看起來效率太低了!而不是做'var result = grunt.task.run('mincss',['style1.css','style2.css',...])''你去*破解*任務的配置然後運行這是通常的方式。如果您正在爲其他任務動態準備數據,我相信必須有更好的方法來做到這一點。如果可能的話,你可以用grunt-contrib維護者鏈接到你的討論嗎? –

+0

發現它,這裏是討論的鏈接:https://github.com/gruntjs/grunt-contrib/issues/118 –

相關問題