2017-12-22 23 views
0

基本的には、grunt serve:local:1stまたはgrunt serve:test:2ndなどを実行して環境とターゲットのさまざまな組み合わせにサービスを提供するプロジェクトを設定しています。実際に私はgrunt-warを使用しているこれらの異なる環境/ターゲットのために実際に構築する必要があります。grunt-war:オプションを動的に定義する

私のターゲットに応じて異なる戦争オプションが必要です(たとえば、異なるwar_namewebxml_display_name)。私が見ているところでは、グラント戦争は引数を取っていないようです...私は--war_name=*name*のようなオプションを渡してgrunt.option('war_name')でそれらを取り上げることができますが、私はすでにビルドタスクのパラメータでターゲットを渡しているので、内部で暴力団のオプションを定義するためにそれを使用する方法はありませんか?また、同じターゲットのために構築している限り、常に同じになる多くの引数を渡す必要はありません。

答えて

0

ない私は、私はそれを行う方法や、それを回避する方法を発見したが、ここで私がやってしまった、それが働いていた何を言うべきかを確認します。

はVARを定義私は動的にしたいオプションとgrunt.initConfig前に定義し、いくつかのデフォルト値は:

grunt.initConfig({ 
    globalConfig: globalConfig, 
    ... 

パラメータ化された0:grunt.initConfig以内にそれを定義

var globalConfig = { 
    war_name:'name', 
    webxml_display_name:'display_name' 
}; 

タスクにそれを利用できるようにしますgrunt-warが呼び出される前に、

grunt.registerTask('war-config', function(target){ 
    if(target==='1st'){ 
    globalConfig.war_name='name_1st'; 
    globalConfig.webxml_display_name='display_name_1st'; 
    }else if(target==='2nd'){ 
    ... 
    }else ... 
}); 

そして最後にbuildタスク内のタスクと呼ばれる::設定が:

war: { 
    target: { 
    options: { 
     war_dist_folder: './dist', 
     war_verbose: true, 
     war_name: '<%= globalConfig.war_name %>', 
     webxml_welcome: 'index.html', 
     webxml_display_name: '<%= globalConfig.webxml_display_name %>' 
    }, 
    ... 
    } 
} 

パラメータを設定するタスクを定義

grunt.registerTask('build', function(environment, target) { 
    grunt.task.run([ 
    'clean:dist', 
    ... 
    'war-config:'+target, 
    'war' 
    ]); 
}); 

私はそれを行う最良の方法であるかどうかはわかりませんが、意図したとおりに動作するようです。

関連する問題