8 votes

Partage de tsconfig.json et chemins relatifs

Mon équipe maintient de multiples paquets et nous essayons de créer une base de données partagée. tsconfig.json avec une configuration commune pour tous. Elle contient nos préférences concernant la cible de compilation, JSX, le répertoire de sortie et les fichiers inclus, par exemple :

{
  "compilerOptions": {
    "module": "esnext",
    "target": "es5",
    "lib": ["es5", "dom"],
    "jsx": "react",
    "outDir": "build/dist"
  },
  "include": ["./src/**/*.ts", "./src/**/*.tsx"]
}

Nous publions ce fichier en tant que module npm partagé, comme suit my-build-config et ensuite utiliser extends dans chaque projet :

{
   "extends": "./node_modules/my-build-config/tsconfig.json"
}

Le problème ici est que tous les chemins dans la configuration partagée sont relatifs à l'emplacement du fichier. Par exemple, il essaiera d'inclure les fichiers ".ts" non pas dans le projet actuel, mais à l'intérieur du projet. my-build-config . Par exemple, au lieu de ./src/index.ts il cherche ./node_modules/my-build-config/src/index.ts .

Existe-t-il un moyen de partager les emplacements des fichiers, afin qu'ils ne soient pas répétés dans plus de 10 paquets ? Peut-être quelque chose de similaire à ce que Jest fait avec rootDir propriété.

2voto

Matt McCutchen Points 13148

Si vous savez my-build-config sera toujours installé à node_modules/my-build-config relatif à chaque projet sans liens symboliques, vous pouvez simplement ajouter en préambule ../../ à chaque chemin affecté.

Alternativement, utilisez un autre outil pour copier votre tsconfig.json dans tous les projets, comme Tresse (divulgation : je suis un collaborateur de Braid).

0voto

Vlad Holubiev Points 2125

Une autre option consiste à publier votre tsconfig.json comme un paquet npm.

Voir par exemple ceci https://github.com/sindresorhus/tsconfig

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X