Skip to content
Vitest 3
Main Navigation Guide & APIConfigurationMode NavigateurAPI avancée
3.2.0
2.1.9
1.6.1
0.34.6

Français

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

Français

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

Apparence

Sidebar Navigation

API

Node API

API avancée

API Vitest

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

API des plugins

API du Runner

Rapporteurs

Métadonnées de tâche

Guide

Exécuter les tests

Extension des Rapporteurs

Pool personnalisé

Configuration de Vitest

Référence de l'API des Tests

Sur cette page

API des plugins 3.1.0+ ​

WARNING

C'est une API avancée. Si vous souhaitez simplement exécuter des tests, vous n'en avez probablement pas besoin. Elle est principalement utilisée par les auteurs de bibliothèques.

Ce guide suppose que vous savez comment travailler avec les plugins Vite.

Vitest prend en charge un hook de plugin expérimental configureVitest depuis la version 3.1. Tout commentaire concernant cette API est bienvenu sur GitHub.

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 réexporte toutes les importations de types Vite via un espace de noms Vite, que vous pouvez utiliser pour maintenir vos versions synchronisées. Cependant, si vous écrivez un plugin pour Vite et Vitest, vous pouvez continuer à utiliser le type Plugin du point d'entrée vite. Assurez-vous simplement que vitest/config est référencé quelque part afin que configureVitest soit correctement augmenté :

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

Contrairement à reporter.onInit, ce hook s'exécute tôt dans le cycle de vie de Vitest, permettant d'apporter des modifications à la configuration comme coverage et reporters. Un aspect particulièrement notable est que vous pouvez manipuler la configuration globale à partir d'un projet de test si votre plugin est défini dans ce projet et non dans la configuration globale.

Contexte ​

project ​

C'est le projet de test actuel auquel le plugin appartient.

Mode Navigateur

Notez que si vous dépendez d'une fonctionnalité de navigateur, le champ project.browser n'est pas encore défini. Utilisez plutôt l'événement reporter.onBrowserInit.

vitest ​

C'est l'instance globale de Vitest. Vous pouvez modifier la configuration globale en modifiant directement la propriété vitest.config :

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

La configuration est résolue

Notez que Vitest a déjà résolu la configuration, ce qui signifie que certains types peuvent différer de la configuration utilisateur habituelle. Cela signifie également que certaines propriétés ne seront pas résolues à nouveau, comme setupFiles. Si vous ajoutez de nouveaux fichiers, assurez-vous de les résoudre d'abord.

À ce stade, les rapporteurs ne sont pas encore créés, donc la modification de vitest.reporters n'aura aucun effet car elle sera écrasée. Si vous devez injecter votre propre rapporteur, préférez modifier la configuration.

injectTestProjects ​

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

Cette méthode accepte un modèle de glob de configuration, un chemin de fichier vers la configuration ou une configuration en ligne. Elle renvoie un tableau de projets de test résolus.

ts
// injecte un seul projet avec un alias personnalisé
const newProjects = await injectTestProjects({
  // vous pouvez hériter de la configuration du projet actuel en référençant `extends`
  // notez que vous ne pouvez pas avoir un projet avec un nom qui existe déjà,
  // il est donc préférable de définir un nom personnalisé
  extends: project.vite.config.configFile,
  test: {
    name: 'my-custom-alias',
    alias: {
      customAlias: resolve('./custom-path.js'),
    },
  },
});

Les projets sont filtrés

Vitest filtre les projets pendant la résolution de la configuration. Par conséquent, si l'utilisateur a défini un filtre, le projet injecté pourrait ne pas être résolu à moins qu'il ne corresponde au filtre. Vous pouvez mettre à jour le filtre via l'option vitest.config.project pour toujours inclure votre projet de test :

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

Notez que cela n'affectera que les projets injectés avec la méthode injectTestProjects.

Référencer la configuration actuelle

Si vous souhaitez conserver la configuration utilisateur, vous pouvez spécifier la propriété extends. Toutes les autres propriétés seront fusionnées avec la configuration définie par l'utilisateur.

Le configFile du projet est accessible dans la configuration de Vite : project.vite.config.configFile.

Notez que cela héritera également du name - Vitest n'autorise pas plusieurs projets avec le même nom, ce qui entraînera une erreur. Assurez-vous de spécifier un nom différent. Vous pouvez accéder au nom actuel via la propriété project.name et tous les noms utilisés sont disponibles dans le tableau vitest.projects.

Pager
Page précédenteTestCollection
Page suivanteAPI du Runner

Publié sous la licence MIT.

Copyright (c) 2021-Present Vitest Team

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

Publié sous la licence MIT.

Copyright (c) 2021-Present Vitest Team