0
作为我们Grunt构建的一部分,我们将一些打印脚本代码转换为几个单独的文件,然后连接所得到的javascript以及所有其他javascript代码。不幸的是,我无法获得文件名的动态组合以与grunt-concat一起工作。在grunt-concat构建步骤中包含动态生成的文件名
这是我们Gruntfile的相关片段 - 请参见generatedTypeScriptFiles
上的部分,该部分不起作用。
var jsfiles = [
'js/external_libraries/inherit.js',
'js/external_libraries/modernizr.js',
'js/baz.js'
];
grunt.initConfig({
gitinfo : {}, //will be populated with values from Git
options : {
"packageName" : nconf.get("name"),
"frameworkVersion" : nconf.get("version"),
"frameworkOutputPath" : nconf.get("frameworkOutputPath"),
"workerOutputPath" : nconf.get("workerOutputPath"),
"sourceMapPath" : nconf.get("sourceMapPath")
},
typescript : {
foo: {
src : ['js/Foo/*.ts'],
dest : 'generated/Foo.js',
},
bar : {
src : ['js/Bar/*.ts'],
dest : 'generated/Bar.js',
}
},
generatedTypeScriptFiles : {
all : function() {
var tsf = [];
for (var key in this.typescript) {
if(this.typescript[key].dest) {
tsf.push(this.typescript[key].dest);
}
}
return tsf;
}()
},
scriptfiles : {
hybrid : function() {
return jsfiles.concat('<%= generatedTypeScriptFiles.all %>');
}(),
web : function() {
return jsfiles.concat('<%= generatedTypeScriptFiles.all %>');
}()
}
concat : {
web : {
options : {
separator : ';',
},
src : '<%= scriptfiles.web %>',
dest : '<%= options.frameworkOutputPath %>'
}
}
}
我猜测,我们的情况下,我们确实知道在我们的打字稿构建步骤中的所有结果的文件名,我们可以只建立了事前的文件名 - 的grunt.initConfig
之外。这应该能解决问题,对吧?还是有另一种方式?
这绝对是一个有效的解决方案。再想一想,我想知道的是,如果在Grunt构建的一个步骤中有一种构建值的方法,并在稍后的阶段/步骤中使用这些值。这是一个比我问的更普遍的问题,所以我想我原来的问题的措辞有些不幸。 – oligofren
当然,您可以在一个任务中将它们存储在配置对象(grunt.config.set)中,然后在另一个任务中检索它们。这里有更多的信息:http://gruntjs.com/api/grunt.config – Creynders
再次看看你的代码后,我认为出错是'generatedTypeScriptFiles.all'没有被替换,对吧?这是因为模板函数没有被调用,但你可以手动完成:http://gruntjs.com/api/grunt.template – Creynders