Je n'arrive pas à faire fonctionner le drapeau outDir
lorsqu'il est utilisé dans package.json
. La structure du répertoire est assez simple: tsconfig.json
au niveau racine, avec un src/
répertoire et un seul fichier index.ts ainsi que d'autres répertoires représentant d'autres modules.
Lors de l'exécution de la commande tsc
sur le fichier d'index, il en crée une nouvelle à côté de lui plutôt que dans le répertoire de génération. Qu'est-ce que je fais mal?
Mon tsconfig:
{
"compilerOptions": {
"outDir": "build"
}
}
Mon script de build npm:
"build": "tsc src/index.ts"
J'appelle le script à partir du répertoire racine du projet. Fait intéressant, exécuter le même script avec un --outDir
flag fonctionne très bien.
Lorsque vous passez des fichiers pour la compilation avec tsc src/index.ts
, votre tsconfig.json
est ignoré.
De la documentation :
Lorsque des fichiers d'entrée sont spécifiés sur la ligne de commande, les fichiers tsconfig.json sont ignorés.
Votre script de compilation npm doit simplement être tsc
sans transmettre aucun fichier.
Ceci est ma structure de dossiers.
Conservez les fichiers TypeScript dans le dossier src et conservez tsconfig.json à la racine.
Dans le fichier json tsconfig, ajoutez le nom de dossier pour outDir dans compilerOptions
"compilerOptions": {
"outDir": "build",
"module": "commonjs",
"target": "es6",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"noImplicitAny": true,
"sourceMap": true
},
et exécutez les commandes ci-dessous.
cd juste dans le dossier racine et tapez
tsc
ou
tsc --outDir.
qui va construire le dossier outDir avec les fichiers js et map.js.
source: https://github.com/Microsoft/TypeScript/issues/10585
Si vous utilisez l'option de compilateur incremental
, vous n'obtiendrez peut-être pas de sortie si vous avez supprimé/modifié des fichiers dans votre outDir
mais que vous n'avez pas supprimé le .tsbuildinfo
fichier.
Mon problème était un peu différent, mais Google m'a amené ici - alors les autres pourraient aussi le penser.