给定一个tsconfig文件并使用命令行tsc,一切正常。但是,使用gulp-typescript
并指定tsconfig.json
和outFile
会创建不同的输出顺序 - 我的问题是我无法找到生成与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.js
和tsconfig.json
(使用gulp-typescript
)会为打字稿文件的非平凡目录生成不同的输出顺序。开发人员应该能够在两个构建过程之间任意切换,并保持对它们没有错过输出排序错误的信心。
我不理解用于tsc
和gulp-typescript
的输出排序规则之间的区别,因此我无法为此问题创建一个简单的repro案例。但理想情况下gulp-typescript
在使用tsconfig项目时会使用与tsc
相同的顺序。
我可以通过使用"子进程" .exec来调用tsc来解决这个问题,但是gulp-typescript
有更好的gulp集成;我也开放使用任何其他直接调用typescript编译器的gulp插件(并使用tsconfig.json项目文件),但我还没能找到。
答案 0 :(得分:4)
我的问题是我无法找到生成与tsc相同的javascript的gulp方法
TypeScript有一个排序的内部实现,它通过以下方式实现:
references
和import
指令对其他文件进行排序。 注意:API消费者(如gulp)可以使用 。此外,即使只有tsc
:https://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