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.