typescript输出顺序 - 与tsconfig.json相当于tsc的gulp

时间:2016-02-08 16:51:20

标签: typescript gulp-typescript

给定一个tsconfig文件并使用命令行tsc,一切正常。但是,使用gulp-typescript并指定tsconfig.jsonoutFile会创建不同的输出顺序 - 我的问题是我无法找到生成与tsc相同的javascript的gulp方法。

我们的构建工作流程基于gulp;但是tsc是黄金标准,具有很好的手表功能,并且具有广泛的工具支持(例如http://dev.ivogabe.com/using-vscode-with-gulp-typescript/)。如果我可以使我们的基于gulp的构建工作与tsc相同,那就太棒了。

示例tsconfig.json

{
  "compilerOptions": {
    "declaration": false,
    "preserveConstEnums": true,
    "outFile": "out/out.js",
    "sourceMap": true,
    "target": "es5",
    "noEmitOnError": true
  },
  "exclude": [
    "node_modules",
    "out"
  ]
}

示例gulpfile.js

"use strict";
var gulp = require('gulp');
var typescript = require('gulp-typescript');

var tsProject = typescript.createProject('tsconfig.json');

gulp.task('typescript:compile', function () {
    var tsResult = tsProject.src()
        .pipe(typescript(tsProject));

    return tsResult.js.pipe(gulp.dest('out'));
});
gulp.task('default', ['typescript:compile']);

同样,我的问题是tsc上面有tsconfig.json;和gulp上面的gulpfile.jstsconfig.json(使用gulp-typescript)会为打字稿文件的非平凡目录生成不同的输出顺序。开发人员应该能够在两个构建过程之间任意切换,并保持对它们没有错过输出排序错误的信心。

我不理解用于tscgulp-typescript的输出排序规则之间的区别,因此我无法为此问题创建一个简单的repro案例。但理想情况下gulp-typescript在使用tsconfig项目时会使用与tsc相同的顺序。

我可以通过使用"子进程" .exec来调用tsc来解决这个问题,但是gulp-typescript有更好的gulp集成;我也开放使用任何其他直接调用typescript编译器的gulp插件(并使用tsconfig.json项目文件),但我还没能找到。

1 个答案:

答案 0 :(得分:4)

  

我的问题是我无法找到生成与tsc相同的javascript的gulp方法

TypeScript有一个排序的内部实现,它通过以下方式实现:

  • 在命令行中传递的文件顺序。如果你是tsconfig,则无关紧要。
  • 检测到文件的顺序。由于您使用的是tsconfig,因此它将从第一个文件开始,然后按referencesimport指令对其他文件进行排序。

注意:API消费者(如gulp)可以使用 。此外,即使只有tschttps://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md

,这也会导致问题

所以使用外部模块:https://basarat.gitbooks.io/typescript/content/docs/project/modules.html

这是一个快速入门:https://basarat.gitbooks.io/typescript/content/docs/quick/browser.html