我有一些用TypeScript编写的大型代码库项目。出于几个原因,我想将同一项目的一些.ts文件编译成几个.js文件。我找不到办法,但只有两个众所周知的项目设置:将每个.ts文件编译成一个.js文件,并将所有.ts文件编译成一个.js文件。
作为一个例子,让我们说我有A.ts,B.ts,C.ts,D.ts并希望制作ABC.js和CD.js
有没有办法在VS 2013或任何加载项工具中执行此操作?
答案 0 :(得分:1)
使用visual studio选项或现有加载项无法实现。你可以在外部使用像grunt这样的东西:https://github.com/TypeStrong/grunt-ts有两个单独的构建目标。
答案 1 :(得分:0)
我很长时间都在挣扎。我的解决方案是删除所有
/// <reference path="sometsfile.ts">形式的文件(这样项目中的所有打字稿文件都可以互相看到)。
然后启用选项以分别编译每个打字稿。 接下来使用grunt-concat(遗憾的是你必须提供你的文件夹的顺序才能工作)并将你的模块文件中的每个js文件连接成一个。
如果文件发生变化,您可以使用grunt watch连接每个模块,这样您就不必再编译所有项目了:)
Visual Studio Typescript Tools也会直接在Visual Studio错误列表中显示任何错误。
我的例子grunt配置:
module.exports = function (grunt) {
grunt.initConfig({
concat: {
options: {
separator: '\n',
},
app: {
src: [
'Src/Application/Modules/**/*.js',
'Src/Application/Config/*.js',
'Src/Application/*.js'
],
dest: 'Scripts/App/App.js'
},
ui: {
src: ['Src/UI/**/*.js'],
dest: 'Scripts/App/UI.js'
}
},
watch: {
app: {
files: ['Src/Application/**/*.js'],
tasks: ['concat:app'],
options: {
nospawn: true
}
},
ui: {
files: ['Src/UI/**/*.js'],
tasks: ['concat:ui'],
options: {
nospawn: true
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-watch');
};
对basarat响应的反应我想指出,如果你使用grunt-ts,你必须在文件中提供引用,并且引用将自动解析。这意味着如果您的模块A对模块B中的文件有引用,那么文件将包含在您的文件中.js
答案 2 :(得分:0)
这是我怎么做的
1) create a _references.ts in your project root folder
2) include references of your ts files in the order you want compilation by the ///<reference syntax
3) go to your typescript project properties -> typescript build option and check the combine javascript output file and mention the file name
4) done