Je suis assez nouveau dans TypeScript, et pour le moment, j'ai des fichiers .ts à plusieurs endroits grâce à la structure de mon projet:
app/
|-scripts/
|-app.ts
|
|-classes/
| |-classA.ts
| |-classB.ts
|
|-controllers/
| |-controllerA.ts
| |-controllerB.ts
|
|-otherStuff/
|-otherstuffA.ts
À l'heure actuelle, lorsque mes fichiers sont compilés, ils sont compilés dans le même répertoire que les fichiers .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
Bien que j'aime la façon dont les fichiers .js conservent la même structure de répertoires que les fichiers .ts, je ne veux pas suivre les fichiers .js dans mon VCS, donc j'aimerais garder tous mes fichiers JavaScript dans un arborescence de répertoires séparée (que je peux ensuite ajouter à .gitignore), comme ceci:
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
Y a-t-il un paramètre ou une option quelque part qui dira au compilateur TypeScript de faire cela? De plus, je ne sais pas si c'est pertinent, mais j'utilise WebStorm.
javascript
typescript
tsc
TheGuyWithTheFace
la source
la source
Réponses:
Utilisez l'option
--outDir
sur tsc (configurée dans File Watcher dans IntelliJ)À partir de la documentation en ligne de commande
--outDir DIRECTORY Redirect output structure to the directory.
Éditer
Depuis Typescript 1.5, cela peut également être défini dans le
tsconfig.json
fichier:la source
--rootDir
drapeau pour passer un dossier racine commun au transpilateur. Cela évite de lui faire trouver un dossier racine commun.Ou ajoutez
"outDir": "build"
au fichier tsconfig.jsonla source
"outDir": "build"
va dans l'"compilerOptions"
objet de votre tsconfig.json, pas comme une propriété de niveau supérieur.Bien que ces réponses soient correctes, vous devez vous demander si vous souhaitez simplement masquer vos fichiers .js de votre IDE .
Dans Visual Studio Code, accédez à
File > Preferences > Settings
ou votre.vscode\settings.json
fichier et entrez:Ce qui précède masque les fichiers .js où existe un fichier .ts correspondant.
la source
__dirname
. (Par exemple, un.graphql
fichier de schéma)Si vous souhaitez mapper la structure de répertoires du dossier app / scripts dans js, je vous suggère d'utiliser les paramètres suivants pour votre observateur de fichiers:
la source
Utilisateurs Intellij, compilez Typescript dans plusieurs répertoires de sortie
Pour les utilisateurs d'Intellij, cela peut être utile. C'est ainsi que j'ai fait fonctionner cela en utilisant le compilateur Typescript intégré.
Informations sur l'environnement
Exemple de structure de répertoire
Configuration Intellij
C:\yourUserName\AppData\Roaming\npm\node_modules\typescript\lib
-m amd -t ES6 -outDir E:\myapp\js
E:\myapp\ts\main.ts
Si ce n'est pas coché, tous vos fichiers essaieront de sortir vers votre chemin outDir.la source
J'ai configuré package.json comme ceci pour que la saisie
npm run start
renvoie tout versbuild
. Les fichiers source sont conservés au formatsrc
. Le fichier est spécifié par--outDir build
.Vous pouvez exclure votre répertoire de construction dans tsconfig.json, bien que ce ne soit probablement pas nécessaire, car il n'y a que JS:
la source
J'utilise Atom avec l'extension atom-typescript et mon tsconfig.json ressemble à ceci:
la source
En ce qui concerne Grunt, actuellement pour enregistrer la structure de votre projet de dossier de développement en production et ne pas obtenir un résultat inattendu après la compilation des fichiers, veuillez vous référer à l'option:
Voir l' option rootDir dans la documentation officielle de grunt-ts.
J'espère que cela aidera quelqu'un s'il reste coincé et obtient un résultat étrange en production.
la source