web-dev-qa-db-fra.com

L'extension du fichier TSCONFIG.JSON ne semble rien étonner

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?

4
Jeanluca Scaljeri

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.

1
a1300

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.

1
Archibald