eslint-plugin-vitest-globals
v1.6.1
Published
ESLint plugin for Vitest globals
Maintainers
Readme
eslint-plugin-vitest-globals
ESLint plugin for Vitest globals
Change Log
Installation
# pnpm
pnpm add -D eslint-plugin-vitest-globals
# npm
npm install -D eslint-plugin-vitest-globals
# yarn
yarn add -D eslint-plugin-vitest-globalsUsage
Classic Config (ESLint 8 and below)
Option 1: Apply to all files
{
"extends": ["plugin:vitest-globals/recommended"]
}Option 2: Apply only to test files (Recommended)
{
"overrides": [
{
"files": ["**/__tests__/**/*.[jt]s?(x)", "**/*.test.[jt]s?(x)", "**/*.spec.[jt]s?(x)"],
"extends": ["plugin:vitest-globals/recommended"]
}
]
}Option 3: Using environment only
If you only need the globals without the base config:
{
"plugins": ["vitest-globals"],
"env": {
"vitest-globals/env": true
}
}Option 4: With overrides and environment
{
"overrides": [
{
"files": ["**/*.test.js", "**/*.spec.js"],
"plugins": ["vitest-globals"],
"env": {
"vitest-globals/env": true
}
}
]
}Flat Config (ESLint 9+)
Option 1: Using the recommended config
// eslint.config.js
import vitestGlobals from 'eslint-plugin-vitest-globals'
export default [
{
files: ['**/*.test.js', '**/*.spec.js'],
...vitestGlobals.configs['flat/recommended']
}
]Option 2: Using the base config
// eslint.config.js
import vitestGlobals from 'eslint-plugin-vitest-globals'
export default [
{
files: ['**/*.test.js', '**/*.spec.js'],
...vitestGlobals.configs['flat/base']
}
]Option 3: With TypeScript files
// eslint.config.js
import vitestGlobals from 'eslint-plugin-vitest-globals'
export default [
{
files: ['**/*.test.ts', '**/*.spec.ts'],
...vitestGlobals.configs['flat/recommended']
}
]Option 4: With JavaScript and TypeScript
// eslint.config.js
import vitestGlobals from 'eslint-plugin-vitest-globals'
export default [
{
files: ['**/*.test.{js,ts}', '**/*.spec.{js,ts}', '**/__tests__/**/*.{js,ts}'],
...vitestGlobals.configs['flat/recommended']
}
]Option 5: Custom configuration
// eslint.config.js
import vitestGlobals from 'eslint-plugin-vitest-globals'
export default [
{
files: ['tests/**/*.js'],
plugins: {
'vitest-globals': vitestGlobals
},
languageOptions: {
globals: {
...vitestGlobals.environments.env.globals
}
}
}
]Supported Globals
The plugin provides the following Vitest globals:
Test Functions
| Global | Description |
| ----------- | --------------------------- |
| suite | Define a test suite |
| test | Define a test |
| describe | Define a test suite (alias) |
| it | Define a test (alias) |
| xtest | Skip a test |
| xit | Skip a test (alias) |
| xdescribe | Skip a suite |
| bench | Define a benchmark |
| benchmark | Define a benchmark (alias) |
Assertions
| Global | Description |
| -------- | ---------------------- |
| expect | Assertion function |
| assert | Assert function |
| chai | Chai assertion library |
Type Checking
| Global | Description |
| -------------- | --------------------- |
| expectTypeOf | Runtime type checking |
| assertType | Type assertion |
Utilities
| Global | Description |
| -------- | ------------------- |
| vi | Vitest mock utility |
| vitest | Vitest instance |
Hooks
| Global | Description |
| ---------------- | --------------------------- |
| beforeAll | Run before all tests |
| afterAll | Run after all tests |
| beforeEach | Run before each test |
| afterEach | Run after each test |
| onTestFinished | Callback when test finishes |
| onTestFailed | Callback when test fails |
Compatibility
| ESLint Version | Config Type | Supported | | -------------- | -------------- | --------- | | ESLint 8.x | Classic Config | ✅ | | ESLint 8.x | Flat Config | ✅ | | ESLint 9.x | Flat Config | ✅ |
| Prettier Version | Compatible | | ---------------- | ---------- | | Prettier 2.x | ✅ | | Prettier 3.x | ✅ |
TypeScript Support
This plugin includes TypeScript type definitions. No additional @types package is needed.
// example.test.ts
// No imports needed - globals are automatically available
describe('TypeScript test', () => {
it('should work with types', () => {
expect(1 + 1).toBe(2)
})
})Vitest Configuration
To enable Vitest globals, add globals: true to your Vitest config:
// vitest.config.js
import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
globals: true
}
})Example with Prettier
This plugin works seamlessly with Prettier:
{
"extends": ["plugin:vitest-globals/recommended", "prettier"]
}Support & Issues
Please open an issue here.
