Skip to content
LogoLogo

Ecosystem & repo layout

Tevm used to live in a single monorepo. It is being split into focused repositories that release independently. This page explains which repository owns what, and why you might depend on more than one.

This repository — evmts/tevm-bundler

Everything involved in turning Solidity into JavaScript modules, plus the editor tooling that shares that pipeline.

PackageWhat it is
@tevm/vite-pluginVite adapter
@tevm/rollup-pluginRollup adapter
@tevm/esbuild-pluginesbuild adapter
@tevm/webpack-pluginwebpack adapter
@tevm/rspack-pluginRspack adapter
@tevm/bun-pluginBun adapter
@tevm/requirejs-pluginRequireJS loader plugin
@tevm/unpluginThe single plugin definition all adapters wrap
@tevm/base-bundlerOrchestrates cache → resolve → compile → codegen
@tevm/configtevm.config.json, Foundry and tsconfig resolution
@tevm/resolutionsSolidity import-graph resolution (JS)
@tevm/resolutions-rsNative Rust implementation of the same
@tevm/compilersolc orchestration and artifact extraction
@tevm/solcVersioned solc loader
@tevm/solc-rsRust wrapper around solc, shipped as native binaries
@tevm/runtimeCode generation (JS)
@tevm/runtime-rsNative Rust implementation of the same
@tevm/bundler-cacheFilesystem artifact cache
@tevm/ts-pluginTypeScript language service plugin
@tevm/lspStandalone language server
@tevm/vscodeVS Code extension
@tevm/effectSmall Effect helpers used across the pipeline

The -rs packages are Rust ports of @tevm/resolutions and @tevm/runtime, distributed as prebuilt native binaries. They implement the same behaviour with lower overhead; the JavaScript versions remain the reference implementations and the portable fallback.

evmts/tevm-monorepo — Tevm core

The in-process Ethereum node and everything around it: tevm, @tevm/memory-client, @tevm/contract, @tevm/actions, the VM, state, and blockchain packages.

The relationship is deliberately one-directional at build time:

  • The bundler generates code that imports createContract from @tevm/contract (or tevm/contract if you depend on tevm). That is the only runtime coupling.
  • The bundler does not require you to run a Tevm node. A generated contract object is a plain typed ABI wrapper and works fine with viem, wagmi or ethers against any chain.
  • Tevm core does not require the bundler. You can write ABIs by hand, or use the tevm CLI's codegen, and never install a plugin from this repository.

Splitting them means a fix to the webpack adapter does not force a release of the EVM, and vice versa. Documentation for core lives at tevm.sh.

Other split repositories

RepositorySiteContents
evmts/tevm-utilsutils.tevm.shLow-level Ethereum utilities shared by core and the bundler
evmts/tevm-contractcontract.tevm.shcreateContract and the Contract type the generated modules use
evmts/tevm-clicli.tevm.shThe tevm command line tool

Two things that used to sit next to the bundler are explicitly not here:

  • whatsabi integration has been folded into Voltaire and the standalone package is being removed. Do not depend on it.
  • MUD support and tevm-run have moved to their own repositories.

Choosing what to install

  • I want typed Solidity imports in my app. One adapter from this repository (@tevm/vite-plugin or similar), plus @tevm/ts-plugin, plus @tevm/contract or tevm at runtime.
  • I want to run the EVM in-process for tests. tevm from core. Add a bundler plugin only if you also want .sol imports.
  • I am building tooling on top of the compiler. Depend on @tevm/base-bundler and its dependencies directly; see Building a custom integration.

Versioning

Every package in this repository is versioned and published together from changesets, currently on the 1.0.0-rc.151 line. Packages in other repositories version independently, so do not assume a matching version number across repos.