# pnpm
pnpm add -D eslint-plugin-vitest-globals
# npm
npm install -D eslint-plugin-vitest-globals
# yarn
yarn add -D eslint-plugin-vitest-globals
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
}
}
]
}
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
}
}
}
]
The plugin provides the following Vitest globals:
| 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) |
| Global |
Description |
expect |
Assertion function |
assert |
Assert function |
chai |
Chai assertion library |
| Global |
Description |
expectTypeOf |
Runtime type checking |
assertType |
Type assertion |
| Global |
Description |
vi |
Vitest mock utility |
vitest |
Vitest instance |
| 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 |
| 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 |
✅ |
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)
})
})
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
}
})
This plugin works seamlessly with Prettier:
{
"extends": ["plugin:vitest-globals/recommended", "prettier"]
}
Please open an issue here.
MIT