Quelle serait une structure de répertoires idiomatique pour un projet TypeScript?
Je voudrais les fonctionnalités suivantes dans une telle structure:
On dirait que je me trompais. J'essayais la structure suivante:
src
|---- lib
|-----|---- mymodule.ts
|---- tests
|-----|---- mymodule.tests.ts
Cependant, j'essayais de compiler le code source sous le répertoire lib
séparément du code de test sous tests
.
find src/lib -name *.ts | xargs tsc --declaration --sourceMap --module commonjs --target es5 --listFiles --outDir lib
puis le code des tests:
find src/tests -name *.ts | xargs tsc --declaration --sourceMap --module commonjs --target es5 --listFiles --outDir tests
Le dossier tests
avait ainsi un autre sous-répertoire lib
et un sous-répertoire tests
. Ce n'était pas ce que j'avais l'intention d'avoir.
Pour résoudre mon problème, je devais les compiler ensemble, alors maintenant ma commande est:
find src -name *.ts | xargs tsc --declaration --sourceMap --module commonjs --target es5 --listFiles --outDir .
Merci à tous pour votre aide.
Je recommanderais de générer une sortie à fichier unique. Que ce soit un navigateur ou pour Node, c'est juste une meilleure idée. Gardez à l'esprit que la plupart des IDE peuvent masquer les fichiers .gitignore
D, donc un volet de fichiers épuré ne devrait pas peut être un problème à atteindre, même si vous laissez le .js
les fichiers se trouvent juste à côté de leurs fichiers .ts
.
Vous pouvez utilisez techniquement --outDir
pour produire comme vous le souhaitez en configurant votre tsconfig.json
De manière appropriée.
C'est assez banal! Maintenez simplement un /tests
. Les importations fonctionnent simplement par traversée de répertoire comme import {MyClass} from "../src/modules/my-class"
(Où ../
Doit sortir de /tests
).
C'est plus difficile dans le navigateur que sur Node - ce dernier a require
s fonctionnant hors de la boîte pour TypeScript.
Je vous recommande fortement d'utiliser quelque chose comme webpack
, mais si vous insistez pour vivre la vie du côté dangereux, voici une exigence conviviale que j'utilise pour parcourir rapidement le code TypeScript sans avoir de configuration de processus de construction.
Étant donné que les chemins absolus sont nécessaires pour les importations Web de travail, voici comment vous pouvez utiliser mon require()
pirater avec TypeScript (généralement pour une session de débogage rapide qui ne nécessite pas de reconstruction).
/entities/user.ts
import {Username} from "../entities/username";
import {Password} from "../entities/password";
export class User {
username: Username;
password: Password;
}
Où Username
et Password
sont export
ed classes dans /entities/username.ts
Et /entities/password.ts
Respectivement.
Bien que ../entities/
Puisse sembler superflu, notez qu'il est essentiel que le navigateur ait des chemins absolus appropriés vers nos entités Username
et Password
. :)
Il est très difficile de donner des conseils concrets, car cela dépend énormément de la taille du projet, des outils, de la plate-forme, etc.