我需要遍历我的复制任务并每次在不同的文件夹中输出。我怎样才能遍历它并每次都为它提供一个var?我有多种语言可供输出,每个语言都需要放在自己的文件夹中。
copy:{
files:{
expand: true,
cwd: '../',
src: [
'static/**',
],
dest: '../../public/[language-folder-var]'
}
}
答案 0 :(得分:1)
在配置对象中,您可以使用模板标记将数据注入字符串:
copy:{
files:{
expand: true,
cwd: '../',
src: [
'static/**',
],
dest: "../../public/<%= grunt.option('lang') %>/"
}
}
然后你需要一个能够迭代不同语言的函数,设置grunt.option变量,并为每个语言运行任务:
function compileLangFiles() {
var langs = ['en', 'fr', 'jp'], lang;
for (lang in langs) {
grunt.option('lang', lang);
grunt.task.run('copy');
}
}
grunt.registerTask('copyLang', copyLangFiles);
答案 1 :(得分:0)
如果您的复制任务包含大量特定于文件类型的处理,您可以采取的一种方法是为不同的文件类型分别执行任务。
例如
grunt.registerTask( 'build', ['copyjs','copycss'] );
如果你有很多文件类型,这是不可取的。在这种情况下,您应该动态创建目标(任务)。我将路径放在一个数组中,并将forEach循环放在它上面,在循环中创建任务对象。
答案 2 :(得分:0)
Panthro,我想像这样的东西。
假设config.json像:
{ langs: ['en', 'fr', 'de'] }
加载(自动解析)
grunt.langconfig = grunt.file.readJSON('config.json');
grunt.langs = grunt.langconfig.langs;
并在iterate task加入langs
argName: grunt.langs.join(',')