2016-04-11 151 views
0

我需要在循環中更改grunt副本中的目標。設置配置?

我可以通過這樣做:

grunt.config.set('copy.files.dest', 'public/'+[i]); 

然後運行:

grunt.task.run('copy'); 

但最後DEST在迴路設置適用於所有任務。

如何爲循環中運行的每個任務應用單獨的dest?

回答

1

我只向您提供一個僞代碼和想法,如果我必須在循環中運行一些任務,我是如何解決這類問題的,或許可以幫助解決您的問題。創建一個將採取一個參數的任務:

module.exports = function(grunt){ 

    grunt.registerTask('myTask', 'Task description', function(dest){ 

     grunt.config.set('copy.files.dest', dest); 
     grunt.task.run(['task list which uses parameter from copy.files.dest']); 

    }); 

    return{ 
     tasks: {} 
    }; 
}; 

在你的循環gruntfile這個任務將被稱爲:

grunt.registerTask('myTask2', 'task description', function(){ 
    var params = ['/path/to/destination', 'second/path/to/dest']; 

    for (var i = 0; i < params.length; i++) { 
     grunt.task.run('myTask1:' + params[i]); 
    } 
}); 
+0

好主意設置PARAMS但不是所有的任務採取PARAMS(比如複印件)這不是真的回答這個問題。 – panthro

+0

我沒有看到你的結構,但是如果你將需要某種動態變化的grunt配置的所有任務收集到一個任務中,並且你將在一個循環中運行這一個任務,並且每個任務都將關注哪個參數將使用它能行得通。順便說一下,還有一個嘗試解決這種問題的咕嚕插件:https://www.npmjs.com/package/grunt-galvanize – thadam

+0

感謝您的幫助,我已upvoted,但因爲它不是答案我不能接受。不管怎麼說,還是要謝謝你。 – panthro