作为我们 Grunt 构建的一部分,我们将一些 typescript 代码转换成几个单独的文件,然后将生成的 javascript 与所有其余的 javascript 代码连接起来。不幸的是,我无法让文件名的动态构建与 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 %>'
}
}
}
我猜想,对于我们在 typescript 构建步骤中实际上知道所有生成的文件名的情况,我们可以预先构建文件名 - 在grunt.initConfig
. 那应该可以解决问题,对吗?还是有其他方法?