API reference
Every package here is published under the @tevm scope on npm and versioned
together, currently on the 1.0.0-rc.151 line.
Bundler adapters
You install exactly one of these. Each is a thin wrapper over
@tevm/unplugin.
| Package | Export | Guide |
|---|---|---|
@tevm/vite-plugin | vitePluginTevm | Vite |
@tevm/rollup-plugin | rollupPluginTevm | Rollup |
@tevm/esbuild-plugin | esbuildPluginTevm | esbuild |
@tevm/webpack-plugin | WebpackPluginTevm (constructor) | webpack |
@tevm/rspack-plugin | rspackPluginTevm | Rspack |
@tevm/bun-plugin | bunPluginTevm | Bun |
@tevm/requirejs-plugin | requirejsPluginTevm | RequireJS |
See Bundler plugins for the shared option type.
Pipeline
Consumed by the adapters, and available directly if you are building your own integration.
| Package | Responsibility |
|---|---|
@tevm/unplugin | The single plugin definition all adapters wrap |
@tevm/base-bundler | Orchestrates cache → resolve → compile → codegen |
@tevm/config | Resolves tevm.config.json, Foundry and tsconfig settings |
@tevm/resolutions | Walks the Solidity import graph |
@tevm/compiler | Runs solc and extracts artifacts |
@tevm/solc | Loads a pinned solc build |
@tevm/runtime | Generates module source from artifacts |
@tevm/bundler-cache | Filesystem artifact cache |
Editor tooling
| Package | Responsibility |
|---|---|
@tevm/ts-plugin | TypeScript language service plugin |
@tevm/lsp | Standalone Volar-based language server |
@tevm/vscode | VS Code extension bundling the language server |
Foundations
| Package | Responsibility |
|---|---|
@tevm/effect | Small Effect wrappers used across the pipeline |
Native implementations
@tevm/resolutions-rs and @tevm/runtime-rs are Rust ports of
@tevm/resolutions and @tevm/runtime,
shipped as prebuilt native binaries with the same behaviour. The JavaScript
packages remain the reference implementations and the portable fallback; prefer
them unless you have measured that resolution or codegen is your bottleneck.
Conventions used here
FileAccessObject— every package that touches the filesystem takes one of these rather than importingnode:fsdirectly, which is what makes the pipeline usable from a language server's in-memory buffers or a browser.Logger— a{ info, warn, error, log }object.consolesatisfies it.- Effect — a few functions return
Effect values instead of promises. Run them with
runPromise/runSyncfromeffect/Effect. - sync twins — resolution APIs come in async and sync pairs. The sync ones exist because the TypeScript language service and Bun's module resolver require synchronous answers.

