2017-12-22 17 views
0

기본적으로 가지고있는 프로젝트는 grunt serve:local:1st 또는 grunt serve:test:2nd과 같이 실행하여 환경과 대상의 다양한 조합을 제공하도록 설정된 프로젝트입니다. 이제 실제로 다른 환경/타겟을 위해 구축해야 할 필요가 있습니다.grunt-war : 옵션을 동적으로 정의하십시오.

내 목표에 따라 다른 전쟁 옵션이 필요합니다 (예 : 다른 war_namewebxml_display_name). 내가 보는 것에 따르면, 무단 전재는 인수를 취하는 것처럼 보이지 않습니다 ... 나는 --war_name=*name*과 같은 옵션을 전달하고 grunt.option('war_name')을 선택합니다. 그러나 이미 빌드 태스크 매개 변수에서 대상을 전달하고 있으므로, 내부적으로 무자비한 전쟁의 옵션을 정의하는 데 사용할 수있는 방법이 없습니까? 또한 같은 목표물을 구축하는 동안 항상 동일한 인수를 여러 번 전달해야하는 것을 피할 수 있습니다.

이 옵션을 grunt.initConfig 전에 VAR을 정의 I 동적를 원하는 : 나는 그것을 또는 주위에 방법을 할 수있는 방법을 찾았지만, 여기에 말을해야하는 경우

답변

0

확실하지 내가 일을 끝내었고,이 일을 무엇 정의하고 일부 기본값 :

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 작업 내에서 작업을 호출 : 12,구성 :

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

난 그것을하는 것이 가장 좋은 방법인지 확실하지 않지만 의도 한대로 작동하는 것 같습니다.