TypeScript utilise uniquement un tsconfig.json
et n'utilise pas automatiquement le tsconfig.json
des sous-répertoires pour les fichiers qui s'y trouvent. Cependant, vous pouvez utiliser des références de projet pour cela.
Créez une structure de répertoire comme ceci :
.
tsconfig.json
tsconfig.settings.json (optionnel)
foo/
node-file.ts
tsconfig.json ("module" : "commonjs")
bar/
browser-file.ts
tsconfig.json ("module" : "esnext")
tsconfig.json
{
"files": [],
"references": [
{"path": "./foo"},
{"path": "./foo/bar"}
]
}
Ceci est le tsconfig.json
racine. Lorsque vous exécutez tsc --build
(voir ci-dessous) dans le répertoire racine, TypeScript construira les projets référencés ./foo/tsconfig.json
et ./foo/bar/tsconfig.json
.
Les "files": []
sont pour arrêter les tsc
accidentels sans --build
qui tentent de compiler tout dans le répertoire racine, ce qui provoquera une erreur mais créera plusieurs fichiers .js
possiblement aux mauvais endroits.
tsconfig.settings.json
(optionnel)
{
"compilerOptions": {
"strict": true,
"noImplicitReturns": true
}
}
Vous pouvez mettre en place une configuration commune à foo
et foo/bar
et étendre cette configuration avec extends
pour réduire la duplication. Notez que tous les chemins relatifs ici seront résolus par rapport à tsconfig.settings.json
lorsqu'ils sont étendus, donc quelque chose comme "outDir": "dist"
peut ne pas fonctionner comme prévu.
foo/tsconfig.json
{
"extends": "../tsconfig.settings.json",
"exclude": ["bar/**/*.ts"],
"compilerOptions": {
"module": "commonjs"
}
}
Ceci est la configuration pour les fichiers CommonJS. Elle étend également la configuration commune et exclut les fichiers dans foo/bar
.
foo/bar/tsconfig.json
{
"extends": "../../tsconfig.settings.json",
"compilerOptions": {
"module": "esnext"
}
}
Ceci est assez similaire à la configuration de foo
.
Construction
Pour compiler foo
et foo/bar
en même temps, utilisez le mode de construction à partir du répertoire racine :
tsc --build # ou tsc -b
# Mode ouverture :
tsc --build --watch # ou tsc -b -w
De le manuel :
Une fonctionnalité tant attendue est la construction intelligente incrémentielle pour les projets TypeScript. Dans la version 3.0, vous pouvez utiliser le drapeau --build
avec tsc
. Il s'agit en fait d'un nouveau point d'entrée pour tsc
qui se comporte plus comme un orchestrateur de construction que comme un simple compilateur.
En exécutant tsc --build
(tsc -b
pour faire court), les étapes suivantes seront effectuées :
- Trouver tous les projets référencés
- Détecter s'ils sont à jour
- Construire les projets obsolètes dans le bon ordre
Vous pouvez fournir à tsc -b
plusieurs chemins de fichiers de configuration (par exemple tsc -b src test
). Tout comme tsc -p
, spécifier le nom du fichier de configuration est inutile s'il est nommé tsconfig.json
.
Vous pouvez également compiler des projets individuels :
tsc -b foo # ou cd foo && tsc
tsc -b foo/bar # ou cd foo/bar && tsc
Notez qu'il y a des drapeaux spécifiques à la construction et vous ne pouvez pas remplacer les options du compilateur avec des arguments en ligne de commande.