Vitest Presets
Shared Vitest configuration presets for web and node workspaces with consistent test and coverage defaults
Overview
@workspace/vitest-presets provides unified Vitest configuration for workspaces in this monorepo. It centralizes common test defaults and exposes environment-specific presets.
Features
- Shared Presets - Common defaults for multiple workspaces
- Web Preset - React + jsdom testing via
@workspace/vitest-presets/web - Node Preset - Server/package testing via
@workspace/vitest-presets/node - Coverage Defaults - V8 provider with text/json/html reporters
Project Structure
packages/vitest-presets/
├── node/
│ └── vitest.config.ts
├── web/
│ └── vitest.config.ts
├── package.json
├── eslint.config.js
└── README.mdAvailable Presets
Web Preset
Use for browser-oriented React workspaces (for example apps/web):
import webPreset from "@workspace/vitest-presets/web";
import path from "path";
import { mergeConfig } from "vitest/config";
export default mergeConfig(webPreset, {
resolve: {
alias: {
"@": path.resolve(__dirname, "./"),
},
},
});Node Preset
Use for package/server workspaces that run tests in a Node runtime:
import nodePreset from "@workspace/vitest-presets/node";
import { mergeConfig } from "vitest/config";
export default mergeConfig(nodePreset, {
// workspace-specific overrides
});Usage
Run tests from the workspace root:
pnpm test --filter=webOr from inside a workspace:
pnpm test
pnpm test:watch
pnpm test:coverageNotes
- The web preset expects a local
vitest.setup.tsin the consuming workspace. - Keep workspace-specific aliases in that workspace
vitest.config.tsusingmergeConfig. - API uses Vitest presets for Node workspaces.
See API Application for app-specific testing commands and Web Application for browser testing setup.
TypeScript Configuration
Unified TypeScript configuration with path aliases and strict type checking for consistent compiler behavior across all projects
Deployment
Production deployment strategies, best practices, security considerations, and environment setup guides for deploying applications to Vercel and other platforms