Typescript编译排序问题

Typescript compile ordering issue gulp-typescript, tsc 1.6

本文关键字:问题 排序 编译 Typescript      更新时间:2023-09-26

我在Visual Studio 2015项目中使用gulp-typescript:"2.9.0"和typescript:" 1.6.2"将angular typescript文件文件夹编译成一个单独的app.js文件。我的问题是,连接的输出顺序是不正确的,导致角抛出异常。最初我能够改变文件名的字母顺序,我可以得到正确的顺序,但这只是停止工作。我还尝试在"_references"中以正确的顺序包含所有文件。它的文件,但这似乎不起作用。我包含了_references。它的文件,我在下面使用。文件"app.config"。它总是出现在输出的顶部,它取决于app.module。ts文件。有人能解决这个问题吗?

/// <reference path="../typings/angularjs/angular.d.ts" />
/// <reference path="../typings/jquery/jquery.d.ts" />
/// <reference path="../typings/angularjs/angular-route.d.ts" />
/// <reference path="app.module.ts" />
/// <reference path="app.zconfig.ts" />
/// <reference path="app/framework/framework.module.ts" />
/// <reference path="app/framework/psframework.directive.ts" />
/// <reference path="app/framework/menu/menu.module.ts" />
/// <reference path="app/framework/menu/menu.directive.ts" />
/// <reference path="app/framework/menu/menu-item.directive.ts" />
/// <reference path="app/framework/dashboard/dashboard.module.ts" />

我使用gulp-angular-filesort插件解决了这个问题。这是生成它的typescript编译任务:

gulp.task('compile', function () {
    var pathsArray = paths.js.typescriptDefinitionFile.concat(paths.js.src);
    gulp.src(pathsArray)
        .pipe(typescript({
            target: 'es5',
            noImplicitAny: true,
            preserveConstEnums: true
        }))
        .pipe(angularFilesort())
        .pipe(concat(paths.js.srcOutputFile))
        .pipe(gulp.dest(paths.js.outputFolder));
});

我没有在typescript配置对象中使用out选项来为每个.ts文件获取一个.js文件。然后,在使用angular sort插件之后,我将它们分别连接起来。

使用sortOutput参数-将其设置为true比如这里

var tscResult = srcResult
        .pipe(gulpTypeScript({
            typescript: require('typescript'),
            sortOutput: true,
            target: "ES5",
            declarationFiles: true,
            noEmitOnError: dontEmitTSbuildErrors,
            out: "./obj/" + outFileName + ".js"
        }, undefined, gulpTypeScript.reporter.longReporter()));