Contributing
March 28, 2026 ยท View on GitHub
Thank you for your interest in contributing to Vite DevTools! Before submitting your contribution, please take a moment to read through the following guidelines.
Please be aware that we are still in the early stages of development, and huge refactoring occasionally are expected.
We are currently focusing on getting the basic data visualization working for Vite-Rolldown's build mode. Dev mode will be delayed for later until Vite get the full-bundler dev mode.
You can check the TODO list (excluding hold-off) if you are interested in helping out.
Setup
Requires pnpm@10.x.
pnpm install
pnpm build # Required: generates Rolldown meta under ./packages/rolldown/node_modules/.rolldown
# Start Rolldown devtools UI
pnpm dev:rolldown
# Start Vite devtools UI
pnpm dev:vite
# Core playground (host app with DevTools overlay)
pnpm play
# Standalone client dev
pnpm play:standalone
Note: After pulling latest commits, remove ./packages/rolldown/node_modules/.rolldown and rebuild to get the latest data format.
Project Structure
Monorepo with pnpm workspaces. Each package's scope:
packages/core - @vitejs/devtools
Main entry point and core functionality.
- CLI (
vite-devtoolscommand) - Client-side injection scripts
- Standalone mode
- WebComponents UI (Dock, Panels, Terminals)
- Node.js server for DevTools UI
- RPC server/client setup
- Host functions and docks management
Key files: src/node/cli.ts, src/node/server.ts, src/client/webcomponents/
packages/kit - @vitejs/devtools-kit
Utility library for integration authors.
- TypeScript types and interfaces for docks, views, panels
defineRpcFunctionand shared state utilities- Event system utilities
- RPC client helpers
Key files: src/index.ts, src/client.ts, src/utils/
packages/rolldown - @vitejs/devtools-rolldown
Built-in UI panel for Rolldown integration.
- Vite plugin (enabled by default)
- Nuxt-based UI for build visualization
- Rolldown build output integration
- Build analysis panels, module graph, file inspection
Key files: src/index.ts (plugin entry), src/ (Nuxt app)
Note: Build generates Rolldown metadata in node_modules/.rolldown folder.
packages/vite - @vitejs/devtools-vite
UI for Vite DevTools (WIP).
packages/ui - @vitejs/devtools-ui
Shared UI components, composables, and UnoCSS preset (presetDevToolsUI).
packages/rpc - @vitejs/devtools-rpc
Typed RPC wrapper over birpc with WebSocket presets.
- RPC client/server implementations
- WebSocket presets
- Message serialization
- Type-safe RPC methods
Key files: src/index.ts, src/client.ts, src/server.ts, src/presets/ws/
packages/self-inspect - @vitejs/devtools-self-inspect
Meta-introspection โ DevTools for the DevTools itself.
packages/webext - @vitejs/devtools-webext
Browser extension (planned for future dev mode). Not accepting contributions currently.
Scripts
pnpm build- Build all packages (via turbo)pnpm watch- Watch mode for all packagespnpm play- Core playground (host app with DevTools overlay)pnpm play:standalone- Standalone client devpnpm dev:rolldown- Rolldown UI dev serverpnpm dev:vite- Vite UI dev serverpnpm docs- VitePress docs dev serverpnpm lint- ESLint (pass--fixto auto-fix)pnpm test- Vitestpnpm typecheck- vue-tsc type check
Workflow
- For new features: open an issue first for discussion
- Make changes, run
pnpm test && pnpm typecheck && pnpm lint - Use conventional commits (
feat:,fix:, etc.) - Submit PR with clear description and related issue reference
Package Guidelines
- core: CLI in
cli-commands.ts, server inserver.ts, components inclient/webcomponents/ - kit: Keep APIs stable, add types for public APIs, consider backward compatibility
- vite: Nuxt 4 app, Vue 3 Composition API, test with
pnpm devafter build - rpc: Keep methods type-safe, document new methods, test client/server