2013-05-08 8 views
10

私は別々のディレクトリにいくつかのプロジェクトがあり、同じ方法でそれらを構築したいと思っています。 タスクからプロジェクト名を(paramとして)定義したいと思います。 Gruntタスクはこのプロジェクトパスをルートパスとして使用します。しかし、私はいくつかのサブフォルダを持っていて手動で更新したくないのですが、プロジェクトを更新したいだけです。それをする機会がありますか?Grunt設定フィールドを動的に更新する

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

私は彼がconfigの外でJS機能を使用することを考えていましたが、これがベストプラクティスであるかはわかりません。

+1

がこのプロジェクトをチェックアウトすることもできます。https://github.com/shama/grunt-hub –

+0

これは私がしかし感謝:) –

+1

私を探していませんそれはいいと思う。とgrunt - usemin、それも動的な設定を使用していますが、パラメータではなく、あなたのように書かれています。 https://github.com/yeoman/grunt-usemin/blob/master/tasks/usemin.jsを参照してください。 – Outsider

答えて

1

試し利用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 
関連する問題