Shareable Vitest testing configuration adhering to modern 2026 standards
Getting started
- Install — npm, pnpm, yarn, bun, source
- Requirements — runtime floor, platform support
- Quick Start — import and extend in seconds
The configuration ecosystem
- The configuration ecosystem —
@sebastienrousseau/configfamily map at a glance
Configuration reference
- Why this approach? — design rationale and engineering principles
- ESM Test Environment & V8 Coverage — before and after rule comparison
- Module compatibility — dual CJS/ESM exports and TypeScript declarations
Operational
- When not to use this configuration — boundaries and limitations
- Development — make targets, validation, test suite
- Security — supply chain, audit policies, commit integrity
- Documentation — all reference docs
- Stability guarantees — SemVer axis, deprecation window
- Minimum-toolchain policy — runtime floor guarantees
- License — dual license terms
Install @sebastienrousseau/vitest-config as a development dependency:
# npm
npm install --save-dev @sebastienrousseau/vitest-config
# pnpm
pnpm add -D @sebastienrousseau/vitest-config
# yarn
yarn add -D @sebastienrousseau/vitest-config
# bun
bun add -d @sebastienrousseau/vitest-configgit clone https://github.com/sebastienrousseau/vitest-config.git
cd vitest-config
make # check + test- Node.js 18.0.0 or newer. Every package manifest declares
engines.node, and CI enforces the runtime floor on every push across macOS, Linux, and Windows. - npm 9.0.0 or newer (or modern pnpm / yarn / bun).
- Module systems. Full native support for ECMAScript Modules (ESM) and CommonJS (CJS).
- TypeScript 5.0 or newer (optional, recommended for type checking).
{
"vitest": "@sebastienrousseau/vitest-config"
}module.exports = require("@sebastienrousseau/vitest-config");import config from "@sebastienrousseau/vitest-config";
export default config;@sebastienrousseau/vitest-config is a focused satellite of the @sebastienrousseau/config suite — a unified ecosystem of 21 single-purpose, zero-overhead developer configurations designed to share a single design philosophy, strict typing, and zero runtime dependencies.
| Configuration | Target / Purpose | Native Standard |
|---|---|---|
@sebastienrousseau/biome-config |
Rust-powered linting & formatting | Biome 1.9+ |
To adopt the complete suite with a single import, install the master meta-package:
npm install --save-dev @sebastienrousseau/configConfiguration rot is one of the most common vectors for project decay. Ad-hoc tool configurations copied between repositories quickly drift, leaving security vulnerabilities unpatched, formatting rules inconsistent, and CI times bloated.
@sebastienrousseau/vitest-config solves this with three deliberate engineering choices:
- Zero Runtime Dependencies: The configuration contains only static, serialisable declarative definitions and clean programmatic adapters.
- Dual CJS/ESM Architecture: Ships dedicated CommonJS (
index.cjs) and ES Module (index.mjs) entrypoints alongside comprehensive TypeScript declarations (index.d.ts). - Deterministic Governance: Versioned strictly by
+0.0.1per release, cryptographically signed with published PGP keys, and audited continuously.
High-performance Vitest configuration with V8 coverage provider and 100% threshold enforcement.
// Custom vitest setup
export default { test: {} };import config from "@sebastienrousseau/vitest-config";
export default config;This package exports dual module entrypoints via package.json exports:
"exports": {
".": {
"types": "./index.d.ts",
"import": "./index.mjs",
"require": "./index.cjs"
}
}Full TypeScript declarations (index.d.ts) are included out of the box, providing rich IDE autocomplete and JSDoc documentation inline.
When your test suite depends on Jest-specific global mocks or browser-less Node runners that do not use Vite's transform pipeline.
Contributors use a standard POSIX Makefile as the convention-based task runner:
| Task | Command | Purpose |
|---|---|---|
| Default gate | make |
Runs full test and lint battery |
| Unit tests | make test |
Executes native validation test suite |
| Lints | make lint |
Runs syntax and code quality checks |
| Clean | make clean |
Removes node_modules and temporary cache |
git clone https://github.com/sebastienrousseau/vitest-config.git
cd vitest-config
make test- Private Reporting: Report security vulnerabilities by emailing sebastian.rousseau@gmail.com. Expect an initial response within 48 hours and a mitigation plan within 7 days.
- Commit Integrity: All commits on
mainand release tags are cryptographically signed. - Release Signing Key: The release-signing PGP key is published in
KEYS.asc:Signing key4B7F16C909C7A8EE9BED338A4F047EDF5F90F638Sebastien Rousseau <sebastian.rousseau@gmail.com>, ed25519, expires 2028-08-16. - Supply Chain: Monitored continuously via Dependabot, CodeQL, and SLSA provenance. See
SECURITY.mdfor details.
- Architecture — Architectural design, directory structure, and invariants.
- Development Guide — Toolchain prerequisites, task reproduction, and CI gates.
- Governance — Maintainer-led project model and decision-making framework.
- Support Guide — Channels for help, bug reports, and feature requests.
- Ecosystem Suite — The
@sebastienrousseau/configfamily repository.
- SemVer Discipline: Versioning increments strictly by
+0.0.1following the repository lifecycle standard. - Output Stability: A rule change that alters linting or formatting output in consumer code is treated as a notable breaking event, clearly documented in
CHANGELOG.md. - Deprecation Window: Deprecated options or configurations remain supported for at least two release cycles before removal.
The minimum supported Node.js version is 18.0.0. The floor may raise only when:
- An upstream LTS version reaches official End-of-Life (EOL).
- The reason is explicitly recorded in
CHANGELOG.mdandDEVELOPMENT.md.
Dual-licensed under either:
- Apache License, Version 2.0 (
LICENSE-APACHE) - MIT License (
LICENSE-MIT)
at your option.
SPDX-License-Identifier: Apache-2.0 OR MIT