Ich bin ziemlich neu in TypeScript und im Moment habe ich an mehreren Stellen .ts-Dateien in meiner Projektstruktur:
app/
|-scripts/
|-app.ts
|
|-classes/
| |-classA.ts
| |-classB.ts
|
|-controllers/
| |-controllerA.ts
| |-controllerB.ts
|
|-otherStuff/
|-otherstuffA.ts
Wenn meine Dateien kompiliert werden, werden sie derzeit in dasselbe Verzeichnis kompiliert, in dem sich die .ts-Dateien befinden:
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
Obwohl mir die Art und Weise gefällt, wie die .js-Dateien dieselbe Verzeichnisstruktur wie die .ts-Dateien beibehalten, möchte ich die .js-Dateien in meinem VCS nicht verfolgen, daher möchte ich alle meine JavaScript-Dateien in a behalten separater Verzeichnisbaum (den ich dann zu .gitignore hinzufügen kann), wie folgt:
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
Gibt es irgendwo eine Einstellung oder Option, die den TypeScript-Compiler dazu auffordert? Ich bin mir auch nicht sicher, ob es relevant ist, aber ich verwende WebStorm.
javascript
typescript
tsc
TheGuyWithTheFace
quelle
quelle
Antworten:
Verwenden Sie die Option
--outDir
auf tsc (konfiguriert im File Watcher in IntelliJ).Aus der Befehlszeilendokumentation
--outDir DIRECTORY Redirect output structure to the directory.
Bearbeiten
Seit Typescript 1.5 kann dies auch in der
tsconfig.json
Datei festgelegt werden:quelle
--rootDir
Flag verwenden können, um einen gemeinsamen Stammordner an den Transpiler zu übergeben. Dadurch wird vermieden, dass ein gemeinsamer Stammordner gefunden wird.Oder fügen
"outDir": "build"
Sie der Datei tsconfig.json hinzuquelle
"outDir": "build"
in das"compilerOptions"
Objekt Ihrer Datei tsconfig.json und nicht als Eigenschaft der obersten Ebene.Obwohl diese Antworten korrekt sind, sollten Sie überlegen, ob Sie Ihre .js-Dateien tatsächlich nur vor Ihrer IDE verbergen möchten .
Gehen Sie in Visual Studio Code zu
File > Preferences > Settings
oder zu Ihrer.vscode\settings.json
Datei und geben Sie Folgendes ein:Das obige versteckt .js-Dateien, in denen eine entsprechende .ts-Datei vorhanden ist.
quelle
__dirname
. (Zum Beispiel eine.graphql
Schemadatei)Wenn Sie die Verzeichnisstruktur des Ordners app / scripts in js zuordnen möchten, empfehlen wir Ihnen, die folgenden Einstellungen für Ihren Datei-Watcher zu verwenden:
quelle
Intellij-Benutzer kompilieren Typescript in mehrere Ausgabeverzeichnisse
Für Intellij-Benutzer kann dies nützlich sein. So habe ich das mit dem eingebauten Typescript Compiler zum Laufen gebracht.
Umgebungsinfo
Beispiel für eine Verzeichnisstruktur
Intellij Setup
C:\yourUserName\AppData\Roaming\npm\node_modules\typescript\lib
-m amd -t ES6 -outDir E:\myapp\js
E:\myapp\ts\main.ts
Wenn dies nicht aktiviert ist, versuchen alle Ihre Dateien, in Ihren outDir-Pfad auszugeben.quelle
Ich richte package.json so ein, dass beim Tippen
npm run start
alles ausgegeben wirdbuild
. Die Quelldateien bleiben insrc
. Die Outfile wird durch angegeben--outDir build
.Sie können Ihr Build-Verzeichnis in tsconfig.json ausschließen, obwohl dies wahrscheinlich nicht erforderlich ist, da dort nur JS vorhanden ist:
quelle
Ich benutze Atom mit der atom-typescript-Erweiterung und meine tsconfig.json sieht so aus:
quelle
In Bezug auf Grunt, um derzeit die Projektstruktur Ihres Entwicklungsordners in der Produktion zu speichern und nach dem Kompilieren der Dateien kein unerwartetes Ergebnis zu erhalten, lesen Sie bitte die Option:
Siehe rootDir Option in den offiziellen Grunt-ts-Dokumenten.
Ich hoffe, es hilft jemandem, wenn er stecken bleibt und ein seltsames Ergebnis in der Produktion erzielt.
quelle