build - typescript outDir-innstilling i tsconfig.json fungerer ikke


Jeg ser ut til å ikke få outDir-flagget til å fungere når det brukes i package.json. Katalogstrukturen er ganske enkel: tsconfig.json på rotnivå, sammen med en src/-katalog og en enkelt index.ts-fil pluss andre kataloger som representerer andre moduler.

Når jeg kjører tsc-kommandoen på indeksfilen, oppretter den en ny fil ved siden av den i stedet for i byggekatalogen. Hva gjør jeg galt?

Min tsconfig:

{
  "compilerOptions": {
    "outDir": "build"
  }
}

Mitt npm build-script:

"build": "tsc src/index.ts"

Jeg kjører skriptet fra rotmappen til prosjektet. Interessant nok fungerer det helt fint å kjøre det samme skriptet med en --outDir-flag.

Svar #1

Når du sender inn filer for kompilering med tsc src/index.ts, blir din tsconfig.json ignorert.

Fra dokumentasjonen:

Når inndatafiler er spesifisert på kommandolinjen, blir tsconfig.json-filer ignorert.

Din npm build-skript bør bare være tsc uten å sende noen filer.

Svar #2

I mitt tilfelle ble det ignorert fordi jeg hadde noEmit: true i tsconfig.json. Av en eller annen grunn ble filene fortsatt generert, men i samme katalog i stedet for å følge outDir.

Konfigurasjonsfilen ble lest riktig, og denne feilen dukket også opp når flagget ble brukt.

Svar #3

Hvis du bruker incremental-kompilatoralternativet, kan det hende at du ikke får output hvis du har slettet/endret filer i din outDir men ikke har fjernet .tsbuildinfo-filen.

Mitt problem var litt annerledes, men Google førte meg hit - så jeg tenkte at andre kanskje også.

Svar #4

Dette er min mappestruktur.

Hold typescript-filene i src-mappen og hold tsconfig.json i rotmappen.

I tsconfig.json-filen legg til foldernavn for outDir i compilerOptions

"compilerOptions": {    
    "outDir": "build",
    "module": "commonjs",
    "target": "es6",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "noImplicitAny": true,
    "sourceMap": true
  },

og kjør kommandoene nedenfor.

bare gå til rotmappen og skriv

tsc

eller

tsc --outDir .

som vil bygge outDir-mappen med js- og map.js-filer.

kilde: https://github.com/Microsoft/TypeScript/issues/10585

Relaterte artikler