Skip to content
Vitest 3
Main Navigation Leitfaden & APIKonfigurationBrowser-ModusFortgeschritten API
3.2.0
2.1.9
1.6.1
0.34.6

Deutsch

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Deutsch

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Aussehen

Sidebar Navigation

API

Node API

Erweiterte API

Vitest API

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

Plugin-API

Runner API

Reporter

Aufgaben-Metadaten

Leitfaden

Tests ausführen

Reporter erweitern

Benutzerdefinierter Pool

Vitest konfigurieren

Test-API-Referenz

Auf dieser Seite

Plugin-API 3.1.0+ ​

WARNING

Dies ist eine erweiterte API. Wenn Sie lediglich Tests ausführen möchten, benötigen Sie diese wahrscheinlich nicht. Sie wird hauptsächlich von Bibliotheksentwicklern verwendet.

Dieser Leitfaden setzt voraus, dass Sie mit Vite-Plugins vertraut sind.

Seit Version 3.1 unterstützt Vitest einen experimentellen configureVitest-Hook für Plugins. Feedback zu dieser API ist auf GitHub willkommen.

ts
import type { Vite, VitestPluginContext } from 'vitest/node';

export function plugin(): Vite.Plugin {
  return {
    name: 'vitest:my-plugin',
    configureVitest(context: VitestPluginContext) {
      // ...
    },
  };
}
ts
/// <reference types="vitest/config" />

import type { Plugin } from 'vite';

export function plugin(): Plugin {
  return {
    name: 'vitest:my-plugin',
    transform() {
      // ...
    },
    configureVitest(context) {
      // ...
    },
  };
}

TypeScript

Vitest re-exportiert alle Vite-Typendefinitionen über einen Vite-Namespace, den Sie verwenden können, um Ihre Typdefinitionen synchron zu halten. Wenn Sie jedoch ein Plugin sowohl für Vite als auch für Vitest schreiben, können Sie weiterhin den Plugin-Typ vom vite-Einstiegspunkt verwenden. Stellen Sie einfach sicher, dass vitest/config irgendwo referenziert ist, damit configureVitest korrekt erweitert wird:

ts
/// <reference types="vitest/config" />

Im Gegensatz zu reporter.onInit wird dieser Hook früh im Vitest-Lebenszyklus ausgeführt, sodass Sie Änderungen an der Konfiguration wie coverage und reporters vornehmen können. Eine bemerkenswerte Änderung ist, dass Sie die globale Konfiguration von einem Testprojekt aus manipulieren können, sofern Ihr Plugin im Projekt und nicht in der globalen Konfiguration definiert ist.

Kontext ​

project ​

Das aktuelle Testprojekt, zu dem das Plugin gehört.

Browser-Modus

Beachten Sie, dass das Feld project.browser noch nicht gesetzt ist, wenn Sie sich auf eine Browserfunktion verlassen. Verwenden Sie stattdessen das Ereignis reporter.onBrowserInit.

vitest ​

Die globale Vitest-Instanz. Sie können die globale Konfiguration ändern, indem Sie die Eigenschaft vitest.config direkt modifizieren:

ts
vitest.config.coverage.enabled = false;
vitest.config.reporters.push([['my-reporter', {}]]);

Konfiguration ist aufgelöst

Beachten Sie, dass Vitest die Konfiguration bereits aufgelöst hat, weshalb einige Typen möglicherweise von der üblichen Nutzerkonfiguration abweichen. Dies bedeutet auch, dass einige Eigenschaften, wie z. B. setupFile, nicht erneut aufgelöst werden. Wenn Sie neue Dateien hinzufügen, stellen Sie sicher, diese zuerst aufzulösen.

Zu diesem Zeitpunkt sind Reporter noch nicht initialisiert, daher hat das Ändern von vitest.reporters keine Auswirkung, da diese überschrieben werden. Wenn Sie stattdessen Ihren eigenen Reporter hinzufügen müssen, ändern Sie die Konfiguration.

injectTestProjects ​

ts
function injectTestProjects(
  config: TestProjectConfiguration | TestProjectConfiguration[]
): Promise<TestProject[]>;

Diese Methode akzeptiert ein Konfigurations-Glob-Muster, einen Dateipfad zur Konfiguration oder eine Inline-Konfiguration. Sie gibt ein Array aufgelöster Testprojekte zurück.

ts
// fügt ein einzelnes Projekt mit einem benutzerdefinierten Alias hinzu
const newProjects = await injectTestProjects({
  // Sie können die aktuelle Projektkonfiguration erben, indem Sie auf `extends` verweisen
  // Beachten Sie, dass kein Projekt mit einem bereits vorhandenen Namen existieren darf;
  // daher empfiehlt es sich, einen benutzerdefinierten Namen zu wählen
  extends: project.vite.config.configFile,
  test: {
    name: 'my-custom-alias',
    alias: {
      customAlias: resolve('./custom-path.js'),
    },
  },
});

Projekte werden gefiltert

Vitest filtert Projekte während der Konfigurationsauflösung. Wenn der Nutzer einen Filter definiert hat, wird das injizierte Projekt möglicherweise nur dann aufgelöst, wenn es dem Filter entspricht. Sie können den Filter über die Option vitest.config.project anpassen, um Ihr Testprojekt immer einzuschließen:

ts
vitest.config.project.push('my-project-name');

Beachten Sie, dass dies nur Projekte betrifft, die mit der Methode injectTestProjects injiziert wurden.

Referenzierung der aktuellen Konfiguration

Wenn Sie die Nutzerkonfiguration beibehalten möchten, können Sie die Eigenschaft extends verwenden. Alle anderen Eigenschaften werden mit der vom Nutzer definierten Konfiguration zusammengeführt.

Die configFile des Projekts kann über die Vite-Konfiguration abgerufen werden: project.vite.config.configFile.

Beachten Sie, dass dies auch den Namen übernimmt. Da Vitest keine mehreren Projekte mit demselben Namen erlaubt, führt dies zu einem Fehler. Stellen Sie sicher, dass Sie einen anderen Namen angegeben haben. Sie können den aktuellen Namen über die Eigenschaft project.name abrufen, und alle verwendeten Namen sind im Array vitest.projects verfügbar.

Pager
Vorherige SeiteTestCollection
Nächste SeiteRunner API

Veröffentlicht unter der MIT-Lizenz.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/advanced/api/plugin

Veröffentlicht unter der MIT-Lizenz.

Copyright (c) 2021-Present Vitest Team