2016-07-22 121 views
0

我是新來的打字稿,我正在運行一個問題編譯。所以我遇到的問題是,當我保存我的.ts文件時,它們會在兩個不同的位置編譯兩次。TypeScript編譯保存.ts文件兩次

我現在的文件結構是:

-app 

    |-css (all css files) 

    |-html (all html files) 

    |-js (all js files) 

    |-ts (all ts files) 

當我救我的.ts文件被編譯並放置在js文件夾,但隨後一組新的文件夾格式創建:

-app 

    |-... 

    |-js (all js files) 

    |-app 

     |-ts (all js files [that were saved ts files]) 
    |-... 

我一直在尋找任何有類似問題但找不到任何東西的人。我的package.json文件和文件tsconfig.json如下:

的package.json

{ 
    "name": "angular2-quickstart", 
    "version": "1.0.0", 
    "scripts": { 
    "start": "tsc && concurrently \"npm run tsc:w\" \"npm run lite\" ", 
    "lite": "lite-server", 
    "postinstall": "typings install", 
    "tsc": "tsc", 
    "tsc:w": "tsc -w", 
    "typings": "typings" 
    }, 
    "license": "ISC", 
    "dependencies": { 
    "@angular/common": "2.0.0-rc.4", 
    "@angular/compiler": "2.0.0-rc.4", 
    "@angular/core": "2.0.0-rc.4", 
    "@angular/forms": "0.2.0", 
    "@angular/http": "2.0.0-rc.4", 
    "@angular/platform-browser": "2.0.0-rc.4", 
    "@angular/platform-browser-dynamic": "2.0.0-rc.4", 
    "@angular/router": "3.0.0-beta.1", 
    "@angular/router-deprecated": "2.0.0-rc.2", 
    "@angular/upgrade": "2.0.0-rc.4", 
    "angular2-in-memory-web-api": "0.0.14", 
    "bootstrap": "^3.3.6", 
    "core-js": "^2.4.0", 
    "d3": "^4.1.1", 
    "d3tip": "0.5.0", 
    "d3-tip": "0.6.7", 
    "d3-tooltip": "0.0.1", 
    "moment": "^2.14.1", 
    "reflect-metadata": "^0.1.3", 
    "rxjs": "5.0.0-beta.6", 
    "systemjs": "0.19.27", 
    "zone.js": "^0.6.12" 
    }, 
    "devDependencies": { 
    "concurrently": "^2.0.0", 
    "lite-server": "^2.2.0", 
    "typescript": "^1.8.10", 
    "typings": "^1.0.4" 
    } 
} 

tsconfig.json:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false, 
    "outDir": "app/js", 
    "rootDir": "app/ts" 
    } 
} 

UPDATE:還是有這個問題。 - 未解決--07/28/2016--

+0

app/ts是ts文件所在的位置 – christian

+0

您說編譯生成兩個不同位置的文件,它們是什麼? –

+0

它在app/js和app/js/app/ts中創建js文件(也將路徑/ app和/ app/ts添加到app/js/...,因爲它們之前不存在) – christian

回答

1

好了,所以我想在幾個星期前,我解決這個問題,但我錯了。不過,我現在已經找到了解決方案。

這個問題實際上並不是我編譯js文件的位置。 js文件在第一次編譯時會到達正確的位置,但是我使用的是Atom IDE,而atom-typescript有一個默認設置,當它們被保存在Atom編輯器中時,它會編譯這些文件。因此,Atom每次保存文件時都會再次編譯這些文件。

THE FIX:(告訴原子打字稿不編譯)

變化tsconfig.json到:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false, 
    "outDir": "./app/js" 
    }, 
    "compileOnSave": false 
} 

我們所有做的是添加了 「compileOnSave」 選項並將其設置爲false。 因此,告訴原子編譯器在保存時不編譯。

注意**由於tsc與我的lite-server同時運行,文件仍然在編譯時發生變化。

+0

這可能是其他人的解決方案,他們以Angular2 Quickstart教程開始,並試圖在使用Atom時將js文件保存在子文件夾中IDE。 – christian

+0

另外,請確保**'「compilerOptions」'後有''compileOnSave':false' **,否則它就不會工作,正如[here]所述(https://discuss.atom.io/t/原子打字稿選項-compileonsave-假犯規工作/6分之24929) – pikiou

0
"outDir": "app/js" 

"rootDir": "app/ts" 

各執行編輯,刪除"outDir": "app/js"和更改ROOTDIR到"rootDir": "app/js"

+0

不幸的是,也沒有工作。 – christian

+0

結果是,所有的js文件也保存到/ app/ts – christian

相關問題