typescript - Når brukes tsconfig.vitest.json i et standard vue@3-prosjekt?


Når jeg oppretter et standard vue@3-prosjekt (npm init vue@3), får jeg flere tsconfig-filer. En av dem er tsconfig.vitest.json. Når blir egentlig denne filen brukt? Jeg kan se at den brukes for "type check" (fra package.json):

  "scripts": {
    "type-check": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false"
  },

Imidlertid antyder navnet at det burde brukes når du kjører Vitest selv. Jeg kan imidlertid ikke se noe som vil få Vitest til å bruke denne konfigurasjonsfilen. Standardnavnet på Vitest-konfigurasjonsfilen er vitest.config.ts. Så nøyaktig når, under hvilke omstendigheter, brukes filen tsconfig.vitest.json?

Svar #1

tsconfig.vitest.json er en TypeScript-konfigurasjonsfil, den er bare nyttig for TypeScript, den endrer ingenting for kjøring av Vitest.

Denne filen er nyttig fordi du kan ha forskjellige TypeScript-konfigurasjoner mellom appfilene dine og testspesifikasjonsfilene dine. Dette er for det meste ønskelig fordi appfilene dine kjører i en nettleser, mens tester kjøres i et node-miljø hvor de kan ha tilgang til node-API-er som fs.

Eksempel :

// AppFile.js
import fs from 'fs' // will report a typescript error

// __tests__/myTest.spec.js
import fs from 'fs' // OK

Det er denne linjen i tsconfig.vitest.json som tillater bruk av Node API:

"types": ["node", "jsdom"]

Svar #2

Det er konfigurasjon for tsc-kompilatoren, som vue-tsc er basert på.