Jestem całkiem nowy w TypeScript i obecnie mam pliki .ts w kilku miejscach w strukturze mojego projektu:
app/
|-scripts/
|-app.ts
|
|-classes/
| |-classA.ts
| |-classB.ts
|
|-controllers/
| |-controllerA.ts
| |-controllerB.ts
|
|-otherStuff/
|-otherstuffA.ts
Teraz, kiedy moje pliki są kompilowane, są one kompilowane w tym samym katalogu, w którym znajdują się pliki .ts:
app/
|-scripts/
|-app.ts
|-app.js
|
|-classes/
| |-classA.ts
| |-classB.ts
| |-classA.js
| |-classB.js
|
|-controllers/
| |-controllerA.ts
| |-controllerB.ts
| |-controllerA.js
| |-controllerB.js
|
|-otherStuff/
|-otherstuffA.ts
|-otherStuffA.js
Chociaż podoba mi się sposób, w jaki pliki .js zachowują tę samą strukturę katalogów co pliki .ts, nie chcę śledzić plików .js w moim VCS, więc chciałbym zachować wszystkie moje pliki JavaScript w oddzielne drzewo katalogów (które mogę następnie dodać do .gitignore), na przykład:
app/
|-scripts/
| |-app.ts
| |
| |-classes/
| | |-classA.ts
| | |-classB.ts
| |
| |-controllers/
| | |-controllerA.ts
| | |-controllerB.ts
| |
| |-otherStuff/
| |-otherstuffA.ts
|
|-js/
|-app.js
|
|-classes/
| |-classA.js
| |-classB.js
|
|-controllers/
| |-controllerA.js
| |-controllerB.js
|
|-otherStuff/
|-otherstuffA.js
Czy jest gdzieś ustawienie lub opcja, która powie kompilatorowi TypeScript, aby to zrobił? Nie jestem też pewien, czy jest to istotne, ale używam WebStorm.
javascript
typescript
tsc
TheGuyWithTheFace
źródło
źródło
Odpowiedzi:
Użyj opcji
--outDir
na tsc (skonfigurowanej w File Watcher w IntelliJ)Z dokumentacji wiersza poleceń
--outDir DIRECTORY Redirect output structure to the directory.
Edytować
Od wersji Typescript 1.5 można to również ustawić w
tsconfig.json
pliku:źródło
--rootDir
flagi, aby przekazać wspólny folder główny do transpilera. Pozwala to uniknąć znalezienia wspólnego folderu głównego.Lub dodaj
"outDir": "build"
do pliku tsconfig.jsonźródło
"outDir": "build"
trafia do"compilerOptions"
obiektu twojego tsconfig.json, a nie jako właściwość najwyższego poziomu.Chociaż te odpowiedzi są poprawne, powinieneś rozważyć, czy faktycznie chcesz ukryć pliki .js przed IDE .
W programie Visual Studio Code przejdź do
File > Preferences > Settings
lub.vscode\settings.json
plik i wprowadź:Powyższe ukrywa pliki .js, w których istnieje odpowiedni plik .ts.
źródło
__dirname
. (Na przykład.graphql
plik schematu)Jeśli chcesz odwzorować strukturę katalogów folderu app / scripts w js, sugeruję użycie następujących ustawień dla twojego File Watch:
źródło
Użytkownicy Intellij, kompilują Typescript do wielu katalogów wyjściowych
Dla użytkowników Intellij może to być przydatne. W ten sposób uruchomiłem to przy użyciu wbudowanego kompilatora Typescript.
Informacje o środowisku
Przykładowa struktura katalogów
Konfiguracja Intellij
C:\yourUserName\AppData\Roaming\npm\node_modules\typescript\lib
-m amd -t ES6 -outDir E:\myapp\js
E:\myapp\ts\main.ts
Jeśli ta opcja nie jest zaznaczona, wszystkie pliki będą próbowały wyprowadzić dane do ścieżki outDir.źródło
Skonfigurowałem plik package.json w ten sposób, aby wpisywanie było
npm run start
wysyłane dobuild
. Pliki źródłowe są przechowywane w plikachsrc
. Plik wyjściowy jest określony przez--outDir build
.Możesz wykluczyć katalog kompilacji w tsconfig.json, chociaż prawdopodobnie nie jest to konieczne, ponieważ jest tam tylko JS:
źródło
Używam Atom z rozszerzeniem atom-typescript, a mój plik tsconfig.json wygląda następująco:
źródło
Jeśli chodzi o Grunt, obecnie aby zapisać strukturę projektu folderu deweloperskiego w środowisku produkcyjnym i uniknąć nieoczekiwanego wyniku po skompilowaniu plików, zapoznaj się z opcją:
Zobacz rootDir opcję w oficjalnej dokumentacji grunt-ts.
Mam nadzieję, że pomoże to komuś, jeśli utknie i uzyska dziwny wynik w produkcji.
źródło