grunt-war:动态定义选项
grunt-war: dynamically define options
基本上我所拥有的是一个项目,该项目由运行设置为服务于不同的环境和目标组合,例如grunt serve:local:1st
或grunt serve:test:2nd
;现在我需要为这些差异进行实际构建 environments/targets 我正在使用 grunt-war.
事实是,根据我的目标,我需要不同的 war 选项(例如,不同的 war_name
和 webxml_display_name
)。据我所见,grunt-war 似乎不接受争论...我知道我可以传递像 --war_name=*name*
这样的选项并用 grunt.option('war_name')
来选择它们,但是因为我我已经在构建任务的参数中传递了目标,难道没有某种方法可以使用它来在内部定义 grunt-war 的选项吗?它还可以避免必须传递许多参数,只要我为同一目标构建,这些参数将始终相同。
不确定我是否应该说我找到了解决方法或绕过它的方法,但这是我最终所做的并且它奏效了:
在 grunt.initConfig
之前用我想动态定义的选项和一些默认值定义了一个变量:
var globalConfig = {
war_name:'name',
webxml_display_name:'display_name'
};
在 grunt.initConfig
中定义它以使其可用于任务:
grunt.initConfig({
globalConfig: globalConfig,
...
参数化 grunt-war
配置:
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('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
任务中调用任务,在 grunt-war
被调用之前:
grunt.registerTask('build', function(environment, target) {
grunt.task.run([
'clean:dist',
...
'war-config:'+target,
'war'
]);
});
我不确定这是否是最好的方法,但它似乎按预期工作。
基本上我所拥有的是一个项目,该项目由运行设置为服务于不同的环境和目标组合,例如grunt serve:local:1st
或grunt serve:test:2nd
;现在我需要为这些差异进行实际构建 environments/targets 我正在使用 grunt-war.
事实是,根据我的目标,我需要不同的 war 选项(例如,不同的 war_name
和 webxml_display_name
)。据我所见,grunt-war 似乎不接受争论...我知道我可以传递像 --war_name=*name*
这样的选项并用 grunt.option('war_name')
来选择它们,但是因为我我已经在构建任务的参数中传递了目标,难道没有某种方法可以使用它来在内部定义 grunt-war 的选项吗?它还可以避免必须传递许多参数,只要我为同一目标构建,这些参数将始终相同。
不确定我是否应该说我找到了解决方法或绕过它的方法,但这是我最终所做的并且它奏效了:
在 grunt.initConfig
之前用我想动态定义的选项和一些默认值定义了一个变量:
var globalConfig = {
war_name:'name',
webxml_display_name:'display_name'
};
在 grunt.initConfig
中定义它以使其可用于任务:
grunt.initConfig({
globalConfig: globalConfig,
...
参数化 grunt-war
配置:
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('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
任务中调用任务,在 grunt-war
被调用之前:
grunt.registerTask('build', function(environment, target) {
grunt.task.run([
'clean:dist',
...
'war-config:'+target,
'war'
]);
});
我不确定这是否是最好的方法,但它似乎按预期工作。