Plugin API 3.1.0+
WARNING
Toto je pokročilé rozhraní API. Pokud chcete pouze spouštět testy, pravděpodobně ho nepotřebujete. Primárně je určeno pro autory knihoven.
Tato příručka předpokládá, že znáte práci s Vite pluginy.
Vitest podporuje experimentální pluginový hook configureVitest
od verze 3.1. Veškeré připomínky k tomuto API jsou vítány na GitHubu.
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
Vitest znovu exportuje všechny importy typů z Vite prostřednictvím jmenného prostoru Vite
, který můžete použít pro udržení synchronizovaných verzí. Pokud však píšete plugin pro Vite i Vitest, můžete nadále používat typ Plugin
z vstupního bodu vite
. Jen se ujistěte, že máte někde odkazováno vitest/config
, aby byl configureVitest
správně rozšířen:
/// <reference types="vitest/config" />
Na rozdíl od reporter.onInit
se tento hook spouští brzy v životním cyklu Vitestu, což vám umožňuje provádět změny v konfiguraci, jako je coverage
a reporters
. Významnější změnou je, že můžete manipulovat s globální konfigurací testovacího projektu, pokud je váš plugin definován v projektu a ne v globální konfiguraci.
Kontext
project
Aktuální testovací projekt, jemuž plugin náleží.
Režim prohlížeče
Všimněte si, že pokud se spoléháte na funkci prohlížeče, pole project.browser
ještě není nastaveno. Místo toho použijte událost reporter.onBrowserInit
.
vitest
Globální instance Vitestu. Globální konfiguraci můžete změnit přímo úpravou vlastnosti vitest.config
:
vitest.config.coverage.enabled = false;
vitest.config.reporters.push([['my-reporter', {}]]);
Konfigurace je vyřešena
Pozor, Vitest již konfiguraci zpracoval, takže některé typy se mohou lišit od běžné uživatelské konfigurace. To také znamená, že některé vlastnosti nebudou znovu vyřešeny, jako například setupFile
. Pokud přidáváte nové soubory, ujistěte se, že je nejprve správně odkážete.
V tomto okamžiku ještě nejsou vytvořeny reportéry, takže úprava vitest.reporters
nebude mít žádný efekt, protože bude přepsána. Pokud potřebujete vložit svůj vlastní reportér, upravte místo toho konfiguraci.
injectTestProjects
function injectTestProjects(
config: TestProjectConfiguration | TestProjectConfiguration[]
): Promise<TestProject[]>;
Tato metoda přijímá konfigurační glob vzor, cestu k souboru konfigurace nebo inline konfiguraci. Vrací pole vyřešených testovacích projektů.
// vloží jeden projekt s vlastním aliasem
const newProjects = await injectTestProjects({
// můžete zdědit konfiguraci aktuálního projektu odkazem na `extends`
// všimněte si, že nemůžete mít projekt se jménem, které již existuje,
// takže je dobrým zvykem definovat vlastní jméno
extends: project.vite.config.configFile,
test: {
name: 'my-custom-alias',
alias: {
customAlias: resolve('./custom-path.js'),
},
},
});
Projekty jsou filtrovány
Vitest filtruje projekty během řešení konfigurace, takže pokud uživatel definoval filtr, vložený projekt nemusí být vyřešen, pokud neodpovídá filtru. Filtr můžete aktualizovat pomocí možnosti vitest.config.project
, aby vždy zahrnoval váš testovací projekt:
vitest.config.project.push('my-project-name');
Pozor, to se týká pouze projektů přidaných metodou injectTestProjects
.
Odkazování na aktuální konfiguraci
Chcete-li zachovat uživatelskou konfiguraci, můžete specifikovat vlastnost extends
. Všechny ostatní vlastnosti budou sloučeny s uživatelskou konfigurací.
Konfigurační soubor projektu (configFile
) je přístupný v konfiguraci Vite: project.vite.config.configFile
.
Všimněte si, že to také zdědí name
– Vitest nepovoluje více projektů se stejným názvem, takže to vyvolá chybu. Ujistěte se, že jste zadali jiné jméno. Aktuální název získáte z vlastnosti project.name
a všechna použitá jména jsou k dispozici v poli vitest.projects
.