2016-09-08 151 views
7

我有這個文件,從教程貼(讓我們面對它,文檔,TUTS和例子之間的差距是驚人的):爲什麼TypeScript編譯器忽略tsconfig.json?

/scripts/tsconfig.json:

{ 
    "compilerOptions": { 
     "emitDecoratorMetadata": true, 
     "experimentalDecorators": true, 
     "module": "commonjs", 
     "noEmitOnError": true, 
     "noImplicitAny": false, 
     "outDir": "../wwwroot/appScripts/", 
     "removeComments": false, 
     "sourceMap": true, 
     "target": "es5", 
     "moduleResolution": "node" 
    }, 
    "exclude": [ 
     "node_modules", 
     "typings/index", 
     "typings/index.d.ts" 
    ] 
} 

選項有集彙編關於保存,但每當我保存打字稿文件時,JavaScript輸出「下」結束,或「連接到」,源文件:

TypeScript 
| 
--test.ts 
    | 
    --test.js 

,這在物理上是在相同的目錄中來源,/TypeScript。如果缺少tsconfig.json,編譯器會抱怨,但是當它存在時,編譯器會忽略"outDir": "../wwwroot/appScripts/"設置。

我真的很新吞掉,但咕嘟咕嘟任務看起來OK對我說:

var tsProject = ts.createProject('scripts/tsconfig.json'); 
gulp.task('ts', function (done) { 
    //var tsResult = tsProject.src() 
    var tsResult = gulp.src([ 
      "scripts/*.ts" 
    ]) 
     .pipe(ts(tsProject), undefined, ts.reporter.fullReporter()); 
    return tsResult.js.pipe(gulp.dest('./wwwroot/appScripts')); 
}); 
+0

什麼是'ts'?它是這個吞噬打字稿模塊嗎? https://www.npmjs.com/package/gulp-typescript –

+0

什麼是節省編譯觀看? –

回答

3

選項設置爲在保存時編譯

當您保存文件時,它是自動編譯該文件中導入的單個文件和文件。關閉IDE中的自動編譯選項,編譯器會考慮tsconfig.json文件。

當在命令行上指定輸入文件時, tsconfig.json文件被忽略。

目錄中存在的tsconfig.json文件表明該目錄是TypeScript項目的根目錄。 tsconfig.json文件指定編譯項目所需的根文件和編譯器選項。一期工程在編制的下列方式之一:

使用tsconfig.json

  1. 通過調用TSC沒有輸入文件,在這種情況下爲tsconfig.json文件編譯器會搜索當前開始目錄並繼續上級目錄鏈。

  2. 通過調用沒有輸入文件的tsc以及指定包含tsconfig.json文件的目錄路徑的--project(或者只是-p)命令行選項。

https://www.typescriptlang.org/docs/handbook/tsconfig-json.html

+0

感謝您的回答!這讓我瘋狂,直到我記得我最近在我的tsconfig.json中添加了''compileOnSave':true'。 – Knotty66