typescript tsc ekskluder med kommandolinjeargumenter


Jeg jobber med et verktøy som trenger å sette opp kompilering dynamisk. I så fall må vi opprettholde et tsconfig JSON-objekt i en database.

Mens vi bruker det til å kompilere på visse maskiner, er det en filskrivingshandling. Jeg mener vi må hente tsconfig-dataene og skrive dem inn i en tsconfig.json-fil, og deretter starte tsc-kompileringen.

Vel, det virker unødvendig å skrive denne konfigurasjonsfilen i hele prosessen, så jeg leter etter en måte å generere en tsc-kommandolinje fra tsconfig json.

Fra kontordokumentet fant jeg ut at det er lett å omforme compilerOptions til CLI-argumenter, men har ingen idé om hvordan man skal håndtere exclude.

{
    "compilerOptions": {
        "module": "system",
        "noImplicitAny": true,
        "removeComments": true,
        "preserveConstEnums": true,
        "outFile": "../../built/local/tsc.js",
        "sourceMap": true
    },
    "include": [
        "src/**/*"
    ],
    "exclude": [
        "node_modules",
        "**/*.spec.ts"
    ]
} 

Med saken over har jeg prøvd noe som:

tsc src/apis/**/*  \
    "\!node_modules" \        # this didn't work
    "\!**/*.spec.ts" \        # this didn't work
    --module "system" \
    --noImplicitAny true \
    --removeComments true \
    --preserveConstEnums true \
    --outFile "../../built/local/tsc.js" \
    --sourceMap true

Det fungerte ikke, jeg trenger noen forslag om hvordan tsc håndterer exclude-tilfellet. Takk for at du leste.

Svar #1

Jeg har en løsning, det er å blande tsconfig.files, tsconfig.include og tsconfig.exclude til et array, og deretter bruke globby på det, slik at vi manuelt kan få listen over filer som skal flates ut til CLI-argumenter.