2015-10-18 67 views
4

我使用gulpfile.js編譯我tsconfig.json項目這種方式不過outFile選項:一飲而盡,打字稿及在tsconfig.json

var ts = require('gulp-typescript'); 

var tsProject = ts.createProject('Modeler/tsconfig.json', 
    { typescript: require('typescript') }); 

gulp.task('build:ts', function() { 
    var tsResult = tsProject.src() 
     .pipe(ts(tsProject)); 
    return tsResult.pipe(gulp.dest('wwwroot/app')); 
}); 

它工作正常,並編譯我的打字稿文件,並把JS文件到wwwroot文件/ app文件夾

的問題出現了,然後我想打字稿編譯器輸出一個連結文件使用不過outFile財產

{ 
    "compilerOptions": { 
    "noImplicitAny": false, 
    "noEmitOnError": true, 
    "removeComments": false, 
    "sourceMap": true, 
    "target": "es5", 
    "module": "commonjs", 
    "outFile": "modeler.js" 
    }, 
    "exclude": [ 
    "node_modules", 
    "wwwroot" 
    ] 
} 

吞氣任務確實科瑞e空輸出文件並創建帶* .ts文件旁邊內容的* .js文件。

我應該修復哪些內容以創建所需的輸出文件而不會污染我的源文件夾?

回答

7

您確定您的TypeScript來源中沒有外部模塊嗎?

我遇到過類似的情況。使用outFile選項時,不允許使用外部模塊,但編譯器不會發出抱怨併發出空文件。此外,外部模塊應該放在「某處」(outDir)。

如果問題不在於使用普通的外部模塊tsc -p .的行爲與使用gulp-typescript的行爲相同?

+1

jquery.d.ts在外部模塊 - 這不是問題。問題是你是否使用'export'關鍵字(在.ts中沒有.d.ts)。有關更多詳細信息,請參閱[this](https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Namespaces%20and%20Modules.md#going-modular)。 – ahz

+0

我看到了,我不應該使用模塊,然後一切正常 – Rem

1

我相信這就是TypeScript編譯器的--outDir選項。見https://github.com/Microsoft/TypeScript/wiki/Compiler-Options並請看看吞掉,打字稿documentation指定:

OUTDIR(串) - 將輸出到不同的(虛擬)目錄。 請注意,您仍然需要gulp.dest將輸出寫入磁盤。

+1

但outDir如何幫助我輸出單個文件? – Rem

+0

你的'outFile'應該像以前一樣發出,只有「臨時.js」文件應該被髮送到'outDir'。所以'outDir'應該可以幫助你擺脫那些污染性的.js文件。 –

+0

但我的問題是,我的輸出文件生成爲空!我需要改變它也不是 – Rem

3

爲了達到這個目的,我建議使用gulp-concat。不止一件事情的Gulp包違背了Gulp的原則。

var concat = require('gulp-concat'); 

gulp.task('scripts', function() { 
    return gulp.src('./lib/*.js') 
    .pipe(concat('all.js')) 
    .pipe(gulp.dest('./dist/')); 
});