Munkaterület
Példa projekt
A Vitest lehetővé teszi több projektkonfiguráció definiálását egyetlen Vitest folyamaton belül. Ez a funkció különösen hasznos monorepo környezetekben, de használható tesztek futtatására különböző konfigurációkkal is, mint például resolve.alias, plugins, vagy test.browser és egyéb beállításokkal.
Munkaterület definiálása
Egy munkaterületnek tartalmaznia kell egy vitest.workspace vagy vitest.projects fájlt a gyökérkönyvtárában (ugyanabban a mappában, mint a gyökérkonfigurációs fájl, vagy a munkakönyvtárban, ha az nem létezik). A Vitest támogatja a ts, js és json kiterjesztéseket ehhez a fájlhoz.
ELNEVEZÉS
Kérjük, vegye figyelembe, hogy ezt a funkciót workspace-nek nevezik, nem workspaces-nek (az "s" nélkül a végén).
A munkaterület konfigurációs fájljának alapértelmezett exporttal kell rendelkeznie, amely a projektekre hivatkozó fájlok vagy glob minták listáját tartalmazza. Például, ha van egy packages nevű mappája, amely tartalmazza a projektjeit, akkor definiálhat egy munkaterületet ezzel a konfigurációs fájllal:
export default ['packages/*'];A Vitest a packages mappában található minden mappát külön projektként fog kezelni, még akkor is, ha nincs benne konfigurációs fájl. A Vitest 2.1 óta, ha ez a glob minta bármilyen fájlra illeszkedik, az Vitest konfigurációnak számít, még akkor is, ha nincs vitest a nevében.
WARNING
A Vitest nem tekinti a gyökér vitest.config fájlt munkaterületi projektként, hacsak azt nem adták meg explicit módon a munkaterület konfigurációjában. Következésképpen a gyökérkonfiguráció csak a globális opciókat befolyásolja, például a reporters és a coverage beállításokat.
A projektekre a konfigurációs fájljaik segítségével is hivatkozhat:
export default ['packages/*/vitest.config.{e2e,unit}.ts'];Ez a minta csak azokat a projekteket fogja tartalmazni, amelyek vitest.config fájljának nevében e2e vagy unit szerepel a kiterjesztés előtt.
A projekteket soron belüli konfigurációval is definiálhatja. A munkaterület fájl mindkét szintaxist támogatja.
import { defineWorkspace } from 'vitest/config';
// a defineWorkspace kiváló típus-tippelési élményt biztosít a fejlesztők számára
export default defineWorkspace([
// illeszkedik minden mappára és fájlra a `packages` mappán belül
'packages/*',
{
// az "extends" segítségével két konfiguráció egyesíthető
extends: './vite.config.js',
test: {
include: ['tests/**/*.{browser}.test.{ts,js}'],
// ajánlott nevet megadni soron belüli konfigurációk használatakor
name: 'happy-dom',
environment: 'happy-dom',
},
},
{
test: {
include: ['tests/**/*.{node}.test.{ts,js}'],
name: 'node',
environment: 'node',
},
},
]);WARNING
Minden projektnek egyedi névvel kell rendelkeznie; ellenkező esetben a Vitest hibát jelez. Ha a soron belüli konfigurációban nincs megadva név, a Vitest egy számot rendel hozzá. A glob szintaxissal definiált projektkonfigurációk esetén a Vitest alapértelmezés szerint a legközelebbi package.json fájl "name" tulajdonságát fogja használni, vagy ha az hiányzik, akkor a mappa nevét.
Ha nem használ soron belüli konfigurációkat, létrehozhat egy kis JSON fájlt a gyökérkönyvtárában:
["packages/*"]A munkaterületi projektek nem támogatják az összes konfigurációs beállítást. A jobb típusbiztonság érdekében használja a defineProject metódust a defineConfig helyett a projektkonfigurációs fájlokban:
// @errors: 2769
import { defineProject } from 'vitest/config';
export default defineProject({
test: {
environment: 'jsdom',
// a "reporters" nem támogatott egy projektkonfigurációban,
// így hibát fog jelezni
reporters: ['json'],
},
});Tesztek futtatása
A munkaterületen belüli tesztek futtatásához definiáljon egy szkriptet a gyökér package.json fájljában:
{
"scripts": {
"test": "vitest"
}
}Mostantól a tesztek futtathatók a csomagkezelővel:
npm run testyarn testpnpm run testbun testHa csak egyetlen projektben kell teszteket futtatnia, használja a --project CLI opciót:
npm run test --project e2eyarn test --project e2epnpm run test --project e2ebun test --project e2eTIP
A --project parancssori (CLI) opciót többször is használhatja több projekt szűrésére:
npm run test --project e2e --project unityarn test --project e2e --project unitpnpm run test --project e2e --project unitbun test --project e2e --project unitKonfiguráció
Egyetlen konfigurációs opció sem öröklődik a gyökérszintű konfigurációs fájlból. Létrehozhat egy megosztott konfigurációs fájlt, és egyesítheti azt a projektkonfigurációval:
import { defineProject, mergeConfig } from 'vitest/config';
import configShared from '../vitest.shared.js';
export default mergeConfig(
configShared,
defineProject({
test: {
environment: 'jsdom',
},
})
);A defineWorkspace szintjén használhatja az extends opciót a gyökérszintű konfiguráció öröklésére. Minden opció egyesül.
import { defineWorkspace } from 'vitest/config';
export default defineWorkspace([
{
extends: './vitest.config.ts',
test: {
name: 'unit',
include: ['**/*.unit.test.ts'],
},
},
{
extends: './vitest.config.ts',
test: {
name: 'integration',
include: ['**/*.integration.test.ts'],
},
},
]);Néhány konfigurációs opció nem engedélyezett egy projektkonfigurációban. A legfontosabb tiltott opciók:
coverage: a lefedettség az egész munkaterületre vonatkozikreporters: csak a gyökérszintű riportolók támogatottakresolveSnapshotPath: csak a gyökérszintű feloldó érvényes- minden egyéb opció, amely nem befolyásolja a tesztfuttatókat
TIP
Minden olyan konfigurációs opció, amely nem támogatott egy projektkonfiguráción belül, * jellel van megjelölve a "Konfiguráció" útmutatóban.