esbuild Plugin
The esbuild plugin provides the same static CSS extraction as the Vite plugin, using esbuild’s onResolve and onLoad hooks.
Install
Section titled “Install”bun add typewritingclassbun add -d typewritingclass-esbuild typewritingclass-compilerpnpm add typewritingclasspnpm add -D typewritingclass-esbuild typewritingclass-compilernpm install typewritingclassnpm install -D typewritingclass-esbuild typewritingclass-compilerConfigure
Section titled “Configure”import * as esbuild from 'esbuild'import twcEsbuildPlugin from 'typewritingclass-esbuild'
await esbuild.build({ entryPoints: ['src/main.tsx'], bundle: true, outdir: 'dist', plugins: [twcEsbuildPlugin()],})Options
Section titled “Options”twcEsbuildPlugin({ strict: true, // default: true})See Strict Mode for details.
Virtual CSS module
Section titled “Virtual CSS module”Same as Vite — import in your entry file:
import 'virtual:twc.css'Watch mode
Section titled “Watch mode”const ctx = await esbuild.context({ entryPoints: ['src/main.tsx'], bundle: true, outdir: 'dist', plugins: [twcEsbuildPlugin()],})await ctx.watch()Comparison with Vite
Section titled “Comparison with Vite”| Feature | Vite | esbuild |
|---|---|---|
| Package | typewritingclass-compiler | typewritingclass-esbuild |
| HMR | Full | Via watch/serve |
| Source maps | MagicString | esbuild built-in |
| Diagnostics | Browser overlay | Terminal output |
Both use the same Rust compiler and produce identical CSS.