Passer au contenu

Gérer le fichier de configuration de Vitest

Si vous utilisez Vite et avez un vite.config fichier, Vitest le lira pour s’accorder avec les plugins et la configuration de votre application Vite. Si vous souhaitez avoir une configuration différente pour les tests ou si votre application principale ne dépend pas spécifiquement de Vite, vous pouvez soit :

  • Créer un vitest.config.ts, qui aura la priorité la plus élevée et remplacera la configuration du vite.config.ts (Vitest supporte toutes les extensions JS et TS conventionnelles, mais ne supporte pas le json) - cela signifie que toutes les options dans votre vite.config seront ignorées
  • Passer l’option --config à la CLI, par exemple vitest --config ./path/to/vitest.config.ts
  • Utiliser process.env.VITEST ou la propriété mode sur defineConfig (sera défini sur test/benchmark si non remplacé par --mode) pour appliquer conditionnellement une configuration différente dans vite.config.ts

Pour configurer vitest lui-même, ajoutez la propriété test dans votre configuration Vite. Vous devrez également ajouter une référence aux types de Vitest en utilisant une commande triple slash en haut de votre fichier de configuration, si vous importez defineConfig depuis vite lui-même.

En utilisant defineConfig de vite, vous devez suivre ceci :

/// <reference types="vitest" />
import { defineConfig } from 'vite'
export default defineConfig({
test: {
// ... Spécifiez les options ici.
},
})

En utilisant defineConfig de vitest/config, vous devez suivre ceci :

import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
// ... Spécifiez les options ici.
},
})

Vous pouvez récupérer les options par défaut de Vitest pour les étendre si nécessaire :

import { configDefaults, defineConfig } from 'vitest/config'
export default defineConfig({
test: {
exclude: [...configDefaults.exclude, 'packages/template/*'],
},
})

Lorsque vous utilisez un vitest.config.js séparé, vous pouvez également étendre les options de Vite depuis un autre fichier de configuration si nécessaire :

import { defineConfig, mergeConfig } from 'vitest/config'
import viteConfig from './vite.config'
export default mergeConfig(viteConfig, defineConfig({
test: {
exclude: ['packages/template/*'],
},
}))

Si votre configuration Vite est définie comme une fonction, vous pouvez définir la configuration comme ceci :

import { defineConfig, mergeConfig } from 'vitest/config'
import viteConfig from './vite.config'
export default defineConfig(configEnv => mergeConfig(
viteConfig(configEnv),
defineConfig({
test: {
exclude: ['packages/template/*'],
},
})
))