Typescript:在Visual Studio 2013中编译为多个.js文件

时间:2015-05-25 04:09:21

标签: javascript visual-studio-2013 typescript

我有一些用TypeScript编写的大型代码库项目。出于几个原因,我想将同一项目的一些.ts文件编译成几个.js文件。我找不到办法,但只有两个众所周知的项目设置:将每个.ts文件编译成一个.js文件,并将所有.ts文件编译成一个.js文件。

作为一个例子,让我们说我有A.ts,B.ts,C.ts,D.ts并希望制作ABC.js和CD.js

有没有办法在VS 2013或任何加载项工具中执行此操作?

3 个答案:

答案 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