給定一個tsconfig文件,然後使用命令行來TSC TSC,一切工作,因爲它應該。然而,使用gulp-typescript
有tsconfig.json
和指定outFile
產生不同的輸出順序 - 我的問題是,我無法找到一個辦法,一飲而盡產生相同的JavaScript作爲TSC一樣。打字稿輸出順序 - 一飲而盡等效採用tsconfig.json
我們的構建工作流程是基於一飲而盡;但tsc
是黃金標準,具有很好的手錶功能,並具有廣泛的工具支持(例如http://dev.ivogabe.com/using-vscode-with-gulp-typescript/)。如果我能讓我們的基於吞吐量的構建工作與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例子。但理想情況下,使用tsconfig項目時gulp-typescript
將使用與tsc
相同的順序。
我可以用一種「子進程」 .exec調用TSC解決這個問題,但gulp-typescript
具有更好的融合,一飲而盡;我還打算使用任何其他的直接調用打字稿編譯器的gulp插件(並使用tsconfig.json項目文件),但我一直無法找到它。
我們使用的模塊,但仍有訂購TSC和咽之間的差異-typescript - 我認爲你的觀點是,如果你正確地使用模塊和導入,順序應該沒有關係。我同意這一點,但仍然不希望由於訂購方面的差異而容易出現奇怪的錯誤。我瞭解使用outFile的缺點 - 實際情況是單個js文件對於庫和SPA代碼來說是可取的。這聽起來像一個選項是明確列出tsconfig.json文件中的所有文件 - 這看起來不太理想,但應該有助於構建一致性。 – crimbo