typescript tsc exkludera med kommandoradsargument


Jag arbetar med ett verktyg som behöver konfigurera kompilering dynamiskt. I så fall behöver vi underhålla ett tsconfig JSON-objekt i en databas.

Medan vi använder det för att kompilera på vissa maskiner finns det en filskrivningsåtgärd. Jag menar att vi behöver hämta tsconfig-data och skriva den i en tsconfig.json-fil, och sedan börja tsc-kompileringen.

Tja, det verkar onödigt att skriva denna konfigurationsfil i hela processen, så jag letar efter ett sätt att generera en tsc-kommandorad från tsconfig json.

Från kontorsdokumentet fann jag att det är lätt att omvandla compilerOptions till CLI-argument, men jag har ingen aning om hur man hanterar 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 fallet ovan har jag försökt med något 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 fungerade inte, jag behöver några förslag på hur tsc hanterar exclude-fallet. Tack för att du läste.

Svar #1

Jag har en lösning, det är att blanda ihop tsconfig.files, tsconfig.include och tsconfig.exlude till en array, sedan använda globby på den, så att vi manuellt kan få listan över filer som ska plattas ut till CLI-argument.