Skip to content
Vitest 3
Main Navigation Guida & APIConfigurazioneModalità BrowserAPI avanzata
3.2.0
2.1.9
1.6.1
0.34.6

Italiano

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

Italiano

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

Aspetto

Sidebar Navigation

API

Node API

API Avanzate

API di Vitest

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

API dei Plugin

API del Runner

Reporter

Metadati del Task

Guida

Esecuzione dei Test

Estensione dei Reporter

Pool Personalizzato

Configurazione di Vitest

Riferimento API di test

In questa pagina

API dei Plugin 3.1.0+ ​

WARNING

Questa è un'API avanzata. Se desideri semplicemente eseguire i test, probabilmente non ne hai bisogno. È utilizzata principalmente dagli autori di librerie.

Questa guida presuppone che tu abbia familiarità con l'utilizzo dei plugin Vite.

Vitest supporta un hook sperimentale per i plugin, configureVitest, a partire dalla versione 3.1. Qualsiasi feedback relativo a questa API è ben accetto su 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 riesporta tutte le importazioni di soli tipi Vite tramite un namespace Vite, che puoi utilizzare per mantenere le tue versioni sincronizzate. Tuttavia, se stai scrivendo un plugin sia per Vite che per Vitest, puoi continuare a usare il tipo Plugin dall'entrypoint vite. Assicurati solo di avere vitest/config referenziato in qualche punto in modo che configureVitest sia esteso correttamente:

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

A differenza di reporter.onInit, questo hook viene eseguito all'inizio del ciclo di vita di Vitest, consentendoti di modificare la configurazione come coverage e reporters. Un aspetto più rilevante è che puoi manipolare la configurazione globale da un progetto di test se il tuo plugin è definito nel progetto e non nella configurazione globale.

Contesto ​

project ​

L'attuale progetto di test a cui appartiene il plugin.

Modalità Browser

Nota che se fai affidamento su una funzionalità del browser, il campo project.browser non è ancora impostato. Usa invece l'evento reporter.onBrowserInit.

vitest ​

L'istanza globale di Vitest. Puoi modificare la configurazione globale modificando direttamente la proprietà vitest.config:

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

La Configurazione è Risolta

Nota che Vitest ha già risolto la configurazione, quindi alcuni tipi potrebbero differire dalla configurazione utente abituale. Ciò significa anche che alcune proprietà non verranno risolte di nuovo, come setupFile. Se stai aggiungendo nuovi file, assicurati di risolverli prima.

A questo punto i reporter non sono ancora stati creati, quindi la modifica di vitest.reporters non avrà alcun effetto perché verrà sovrascritta. Se hai bisogno di iniettare il tuo reporter, modifica invece la configurazione.

injectTestProjects ​

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

Questo metodo accetta un pattern glob di configurazione, un percorso di file per la configurazione o una configurazione inline. Restituisce un array di progetti di test risolti.

ts
// inietta un singolo progetto con un alias personalizzato
const newProjects = await injectTestProjects({
  // puoi ereditare la configurazione del progetto corrente facendo riferimento a `extends`
  // nota che non puoi avere un progetto con un nome già esistente,
  // quindi è una buona pratica definire un nome personalizzato
  extends: project.vite.config.configFile,
  test: {
    name: 'my-custom-alias',
    alias: {
      customAlias: resolve('./custom-path.js'),
    },
  },
});

I Progetti sono Filtrati

Vitest filtra i progetti durante la risoluzione della configurazione, quindi se l'utente ha definito un filtro, il progetto iniettato potrebbe non essere risolto a meno che non corrisponda al filtro. Puoi aggiornare il filtro tramite l'opzione vitest.config.project per includere sempre il tuo progetto di test:

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

Nota che questo influenzerà solo i progetti iniettati con il metodo injectTestProjects.

Referenziare la Configurazione Corrente

Se vuoi mantenere la configurazione utente, puoi specificare la proprietà extends. Tutte le altre proprietà verranno unite con la configurazione definita dall'utente.

Il configFile del progetto può essere acceduto nella configurazione di Vite: project.vite.config.configFile.

Nota che questo erediterà anche il name - Vitest non consente più progetti con lo stesso nome, quindi questo genererà un errore. Assicurati di aver specificato un nome diverso. Puoi accedere al nome corrente tramite la proprietà project.name e tutti i nomi usati sono disponibili nell'array vitest.projects.

Pager
Pagina precedenteTestCollection
Pagina successivaAPI del Runner

Rilasciato sotto la licenza MIT.

Copyright (c) 2021-Present Vitest Team

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

Rilasciato sotto la licenza MIT.

Copyright (c) 2021-Present Vitest Team