2013-05-08 4 views
10

Mam kilka projektów w osobnych katalogach i chcę je budować w ten sam sposób. Chcę zdefiniować nazwę projektu z zadania (jako parametr). Gruntowe zadania będą używać tej ścieżki projektu jako ścieżki głównej. Ale mam kilka podfolderów i nie chcę ich aktualizować ręcznie. Chcę tylko zaktualizować projekt. Jest taka szansa?Dynamicznie aktualizuj pola konfiguracji Grunta

grunt.initConfig({ 
    paths : { 
    project : null, 
    projectStylesheets : '<%= paths.project %>/stylesheets', 
    // ... 
    } 
}); 

grunt.registerTask('server', function(project) { 
    // -> project = 'some_name' 
    var paths = grunt.config.get('paths'); 
    paths.project = project; 
    grunt.config.set('paths', paths); 
    // -> { project: 'some_name', projectAssets: 'stylesheets' } 
}); 

Myślałem o użyciu funkcji JS poza jego konfiguracją, ale nie jestem pewien, czy to najlepsza praktyka.

+1

chcieć kasy ten projekt: https://github.com/shama/grunt-hub –

+0

To nie szukam, ale dzięki :) –

+1

I myślę, że jest w porządku. i grunt-usemin, używa również dynamicznej konfiguracji, ale nie parametru, jest napisane tak jak Ty. zobacz https://github.com/yeoman/grunt-usemin/blob/master/tasks/usemin.js – Outsider

Odpowiedz

1

próbie użycia registermultitask - http://gruntjs.com/api/grunt.task#grunt.task.registermultitask

grunt.initConfig({ 
    projectName1 : { 
     projectStylesheets: 'path_to_stylesheets1', 
    }, 
    projectName2 : { 
     projectStylesheets: 'path_to_stylesheets2', 
    } 
}) 

grunt.registerMultiTask('server', function() { 
    var path = grunt.data.projectStylesheets;  
    //operations with stylesheets 
}); 

For build use 
grunt server:projectName1 
grunt server:projectName2