web-dev-qa-db-fra.com

Comment utiliser plusieurs fichiers tsconfig?

J'utilise Visual Studio Code et j'ai une structure de projet assez commune:

├── client/
│   ├── tsconfig.json
├── shared/
├── server/
│   ├── tsconfig.json
├── project.json

Les deux fichiers tsconfig ont des paramètres différents (par exemple, celui sous client/ cible ES5, celui sous server/ cible ES6).

Le problème est que je veux que le répertoire partagé soit inclus dans les deux projets. Je ne peux pas utiliser tsconfig car l'option exclude ne me permet pas d'inclure un dossier situé dans un répertoire plus élevé que tsconfig.json, et d'utiliser files, je dois constamment tenir à jour la liste des fichiers supporte pas les globs.

Notez que je peux bien compiler en ajoutant le dossier partagé dans tsc. Ce que je veux, c'est que le code Visual Studio IDE reconnaisse le code partagé pour intellisense, etc.

Est-ce que la seule option est d'attendre filesGlob ?

11
Mike

La nouvelle version de VSCode prend en charge TypeScript 2, ajoutant que cela ajoute la prise en charge des globs dans tsconfig.json avec l’option include. Voir http://www.typescriptlang.org/docs/handbook/tsconfig-json.html

0
Mike

J'ai répondu à ceci ici: tsconfig extension answer

L'essentiel de la réponse:

pour ce faire, vous pouvez étendre votre fichier tsconfig.json de base:

extension tsconfig

il suffit de ne pas exclure les répertoires de la base tsconfig.json et TypeScript devrait pouvoir résoudre vos typages pour vous (sachez que cela est vrai en utilisant node_modules/@ types ou le module typings)

Par exemple:

configs/base.json:

{
  "compilerOptions": {
    "noImplicitAny": true,
    "strictNullChecks": true
  }
}

tsconfig.json:

{
  "extends": "./configs/base",
  "files": [
    "main.ts",
    "supplemental.ts"
  ]
}

tsconfig.nostrictnull.json:

{
   "extends": "./tsconfig",
   "compilerOptions": {
     "strictNullChecks": false
   }
}
8
weagle08

Est-ce que la seule option est d'attendre filesGlob?

Meilleure option: 

  • Il suffit d'utiliser un seul tsconfig.json et uniquement bundle (en utilisant quelque chose comme webpack) les fichiers dans client (le webpack récupérera les références au partagé). 

C’est le workflow que j’utilise ici https://github.com/alm-tools/alm ???? (le seul tsconfig.json https://github.com/alm-tools/alm/blob/master/src/tsconfig.json )

Ce flux de travail est également traité dans les documents de conception d'alm: https://basarat.gitbooks.io/alm/content/contributing/

0
basarat