Plugin API 3.1.0+
WARNING
Ez egy haladó API. Ha csak teszteket szeretne futtatni, valószínűleg nincs szüksége rá. Elsősorban könyvtárfejlesztők használják.
Ez az útmutató feltételezi, hogy ismeri a Vite bővítmények használatát.
A Vitest a 3.1-es verzió óta támogatja a kísérleti configureVitest plugin hookot. Bármilyen visszajelzést szívesen fogadunk az API-val kapcsolatban a GitHubon.
import type { Vite, VitestPluginContext } from 'vitest/node';
export function plugin(): Vite.Plugin {
return {
name: 'vitest:my-plugin',
configureVitest(context: VitestPluginContext) {
// ...
},
};
}/// <reference types="vitest/config" />
import type { Plugin } from 'vite';
export function plugin(): Plugin {
return {
name: 'vitest:my-plugin',
transform() {
// ...
},
configureVitest(context) {
// ...
},
};
}TypeScript
A Vitest újraexportálja az összes Vite-ból származó típusimportot egy Vite névtéren keresztül, amelyet használhat a verziók szinkronban tartásához. Azonban, ha egy bővítményt ír mind a Vite, mind a Vitest számára, továbbra is használhatja a Plugin típust a vite belépési pontból. Csak győződjön meg róla, hogy a vitest/config valahol hivatkozva van, hogy a configureVitest megfelelően kiegészüljön:
/// <reference types="vitest/config" />Ellentétben a reporter.onInit hookkal, ez a hook korán fut a Vitest életciklusában, lehetővé téve a konfigurációk, például a coverage és a reporters módosítását. Egy figyelemre méltóbb változás, hogy manipulálhatja a globális konfigurációt egy tesztprojektből, ha a bővítménye a projektben van definiálva, és nem a globális konfigurációban.
Kontextus
project
Az aktuális tesztprojekt, amelyhez a bővítmény tartozik.
Böngésző mód
Vegye figyelembe, hogy ha böngésző funkcióra támaszkodik, a project.browser mező még nincs beállítva. Ehelyett használja a reporter.onBrowserInit eseményt.
vitest
A globális Vitest példány. A globális konfigurációt közvetlenül módosíthatja a vitest.config tulajdonságon keresztül:
vitest.config.coverage.enabled = false;
vitest.config.reporters.push([['my-reporter', {}]]);A konfiguráció feloldva
Vegye figyelembe, hogy a Vitest már feloldotta a konfigurációt, így egyes típusok eltérhetnek a szokásos felhasználói konfigurációtól. Ez azt is jelenti, hogy egyes tulajdonságok nem lesznek újra feloldva, mint például a setupFiles. Ha új fájlokat ad hozzá, győződjön meg róla, hogy először feloldja azokat.
Ezen a ponton a riportálók még nincsenek létrehozva, így a vitest.reporters módosítása nem lesz hatással, mert azt felül fogják írni. Ha saját riportálót kell injektálnia, ehelyett módosítsa a konfigurációt.
injectTestProjects
function injectTestProjects(
config: TestProjectConfiguration | TestProjectConfiguration[]
): Promise<TestProject[]>;Ez a metódus elfogad egy konfigurációs globmintát, egy fájl elérési utat a konfigurációhoz, vagy egy beágyazott konfigurációt. Egy feloldott tesztprojekt tömböt ad vissza.
// egyetlen projekt injektálása egyéni alias-szal
const newProjects = await injectTestProjects({
// örökölheti az aktuális projekt konfigurációját az `extends` használatával
// vegye figyelembe, hogy nem lehet olyan projektje, amelynek neve már létezik,
// ezért ajánlott egy egyedi nevet megadni
extends: project.vite.config.configFile,
test: {
name: 'my-custom-alias',
alias: {
customAlias: resolve('./custom-path.js'),
},
},
});A projektek szűrve vannak
A Vitest a konfiguráció feloldása során szűri a projekteket, így ha a felhasználó szűrőt definiált, az injektált projekt nem biztos, hogy feloldódik, hacsak nem egyezik a szűrővel. Frissítheti a szűrőt a vitest.config.project opcióval, hogy mindig tartalmazza a tesztprojektjét:
vitest.config.project.push('my-project-name');Vegye figyelembe, hogy ez csak az injectTestProjects metódussal injektált projekteket érinti.
Az aktuális konfigurációra hivatkozás
Ha meg szeretné tartani a felhasználói konfigurációt, megadhatja az extends tulajdonságot. Az összes többi tulajdonság egyesül a felhasználó által definiált konfigurációval.
A projekt configFile elérhető a Vite konfigurációjában: project.vite.config.configFile.
Vegye figyelembe, hogy ez a name tulajdonságot is örökli – a Vitest nem engedélyez több projektet azonos névvel, így ez hibát fog dobni. Győződjön meg róla, hogy más nevet adott meg. Az aktuális nevet a project.name tulajdonságon keresztül érheti el, és az összes használt név elérhető a vitest.projects tömbben.