J'ai un projet à partir duquel j'ai besoin de construire deux produits différents. Dis que j'ai
./src/advanced
./src/basic
Tous les codes sont écrits dans Typescript pour que j'ai besoin de compiler cela avec tsc
Pour cette raison, j'ai créé 3 TSCONFIG fichiers
TSCONFIG-BASE.JSON
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"noImplicitAny": false,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es6",
"sourceMap": true,
"outDir": "./dist",
"baseUrl": "./src",
"lib": ["es2018", "dom", "dom", "dom.iterable", "es6"],
"importHelpers": true,
},
"exclude": ["node_modules", "**/*.spec.ts","dist"]
Maintenant pour construire le produit basic
j'ai
TSCONFIG-BASIC.JSON
{
"extends": "./tsconfig-base.json",
"compilerOptions": {
"noEmitHelpers": true
},
"files": [
"basic/main.ts"
]
}
Et je compile comme suit
$> tsc -p ./tsconfig-basic.json
Maintenant j'ai 2 problèmes
1) le fichier basic/main.ts
ne peut pas être trouvé, c'est regarder dans ./basic/main.ts
tandis que cela aurait dû être ./src/basic/main.ts
. Pourquoi baseUrl
non axé?
2) Si (1) est fixe, les fichiers compilés ne sont pas écrits à ./dist
. Pourquoi est-ce "outDir": "./dist
À partir du fichier de base non utilisé ici? Quand j'ajoute le outDir
_ à tsconfig-basic.json ça marche comme prévu
Quoi qu'il en soit, il semble que l'extension ici ne fonctionne pas, ou fonctionne différemment de ce que j'attends. Toute suggestion comment améliorer ma configuration?
1) baseUrl
_ est seulement destiné à être utilisé avec des baunllers comme WebPack. Voir la discussion sur Typescript/10866
2) Ceci est malheureusement par conception. Voir le problème Typescript/29172
Quote Wesley Wigham (Microsoft Employee):
[.____
Vous devrez répéter le outDir
pour chaque tsconfig.json
fichier que vous avez.
Il y a un tour cependant. Si vous créez un lien symbolique vers le fichier TSConfig de base à partir d'un répertoire correspondant et étendez la version symbolée plutôt que l'original, tous les chemins seront résolus en fonction de vos attentes.