3
votes

typescript - Inclut les types dans les chemins, mais ne les compile pas

J'ai un problème avec la dactylographie. J'ai la hiérarchie suivante:

.
+-- build
|   +-- @types
|   |   +-- declaration1.js
|   |   +-- declaration2.js
|   +-- common
|   |   +-- utils1.js
|   |   +-- utils2.js
|   +-- tests
|   |   +-- utils1.test.js
|   |   +-- utils2.test.js

Dans mon tsconfig.json, je mets cette configuration pour que tous mes types soient exposés à la fois dans les tests et dans les communs (ou vscode se plaint):

.
+-- build
|   +-- common
|   |   +-- utils1.js
|   |   +-- utils2.js
// nothing else

Mon problème est que je ne veux pas compiler tout cela, je veux juste compiler les communs (qui sont des utils, je ne peux pas obtenir un (ou même plusieurs) point (s) d'entrée )).

Je voudrais donc taper tsc et obtenir un dossier build comme ceci:

{
  "compilerOptions": {
    "outDir": "build/",
  },
  "include": ["tests", "common", "@types"]
}


0 commentaires

3 Réponses :


0
votes

Pour inclure des types mais pas les compiler, ajoutez-les à "typeRoots" dans votre tsconfig.json . Tout ce qui se trouve dans "include" sera compilé.

{
  "exclude": [
    "node_modules",
    "wwwroot"
  ]
}

Pour ignorer les fichiers ou répertoires, utilisez l'option "exclude" , par exemple:

{
  "compilerOptions": {
    "typeRoots": [ "@types", "tests" ]
  }
}


2 commentaires

Si je le fais, j'obtiens l'erreur Impossible de trouver le fichier de définition de type pour «commun». . VSCode se plaint également des types non trouvés


Vous pouvez utiliser des modules pour importer des classes dans vos fichiers communs. Dans votre declaration.ts : Déclaration de classe d'exportation {…} . Dans votre utils.ts : importez * en tant que déclaration1 depuis '../@types/declaration1 . Vous pouvez maintenant utiliser Declaration1.Declaration pour accéder à votre classe / type. Il n'est également plus nécessaire d'inclure typeRoots dans votre tsconfig.json .



0
votes

Vous pouvez créer un nouveau tsconfig.json sous les dossiers que vous ne voulez pas construire, y ajouter «noEmit: true».


0 commentaires

0
votes

Essayez de créer un nouveau tsconfig.json sous le dossier que vous ne voulez pas construire et ajoutez ci-dessous:

{
  "compilerOptions": {
    ...
  },
  "include": ["src/**/*.ts"]     // files you want to build
}

et incluez les fichiers que vous voulez construire dans le tsconfig.json original: p >

{
  "compilerOptions": {
    "noEmit": true
  },
  "exclude": ["src/**/*.ts"]     // files you want to build
}


0 commentaires