AST injection of stable element IDs and bundler plugins for Domscribe.
npm install -D @domscribe/transformNote: You probably want a framework adapter instead (
@domscribe/react,@domscribe/vue,@domscribe/next,@domscribe/nuxt). Those packages wrap this one and handle framework-specific wiring automatically.
| Bundler | Plugin | Parser |
|---|---|---|
| Vite 5-7 | @domscribe/transform/plugins/vite |
Acorn (JS/JSX) or VueSFC |
| Webpack 5 | @domscribe/transform/plugins/webpack |
Babel (TS/JSX) or VueSFC |
| Turbopack | Self-initializing loader | Babel (TS/JSX) |
These options apply to the relay field across all bundler plugins.
| Option | Type | Default | Description |
|---|---|---|---|
autoStart |
boolean |
true |
Auto-start the relay daemon if not running |
port |
number |
0 (dynamic) |
Relay server port (only used when starting) |
host |
string |
'127.0.0.1' |
Relay server host (only used when starting) |
bodyLimit |
number |
10485760 (10MB) |
Max request body size in bytes (only used when starting) |
These options apply when overlay is set to an object instead of a boolean.
| Option | Type | Default | Description |
|---|---|---|---|
initialMode |
'collapsed' | 'expanded' |
'collapsed' |
Initial display mode for the overlay |
debug |
boolean |
false |
Enable debug logging in the overlay |
import { domscribe } from '@domscribe/transform/plugins/vite';
domscribe({
include: /\.(jsx|tsx|vue)$/i,
exclude: /node_modules|\.test\.|\.spec\./i,
debug: false,
relay: { autoStart: true, port: 0, host: '127.0.0.1', bodyLimit: 10485760 },
overlay: true,
rootDir: undefined, // Override root directory for .domscribe/ artifacts
});| Option | Type | Default | Description |
|---|---|---|---|
include |
RegExp |
/\.(jsx|tsx|vue)$/i |
File pattern to include |
exclude |
RegExp |
/node_modules|\.test\.|\.spec\./i |
File pattern to exclude |
debug |
boolean |
false |
Enable debug logging |
relay |
RelayPluginOptions |
See shared | Relay server config |
overlay |
boolean | OverlayPluginOptions |
true |
Overlay UI config |
rootDir |
string |
Vite's config.root |
Override root directory for .domscribe/ artifacts. Needed when Vite root differs from project root (e.g., Nuxt with a custom srcDir). |
import { DomscribeWebpackPlugin } from '@domscribe/transform/plugins/webpack';
new DomscribeWebpackPlugin({
enabled: true,
debug: false,
relay: { autoStart: true, port: 0, host: '127.0.0.1' },
overlay: true,
});| Option | Type | Default | Description |
|---|---|---|---|
enabled |
boolean |
true in dev, false in production |
Enable the plugin |
debug |
boolean |
false |
Enable debug logging |
relay |
RelayPluginOptions |
See shared | Relay server config |
overlay |
boolean | OverlayPluginOptions |
true |
Overlay UI config |
The webpack loader is managed internally by DomscribeWebpackPlugin. If you need to configure it directly via @domscribe/transform/webpack-loader:
| Option | Type | Default | Description |
|---|---|---|---|
debug |
boolean |
false |
Enable debug logging |
enabled |
boolean |
true |
Enable transformation |
Turbopack has no plugin system, so the loader is self-initializing — it manages relay lifecycle and overlay injection directly.
// next.config.ts (turbopack)
{
turbopack: {
rules: {
'*.{tsx,jsx}': {
loaders: [{
loader: '@domscribe/transform/turbopack-loader',
options: {
enabled: true,
debug: false,
relay: { autoStart: true, port: 0, host: '127.0.0.1' },
overlay: false,
autoInitPath: undefined,
},
}],
},
},
},
}| Option | Type | Default | Description |
|---|---|---|---|
enabled |
boolean |
true |
Enable transformation |
debug |
boolean |
false |
Enable debug logging |
relay |
RelayPluginOptions |
See shared | Relay server config |
overlay |
boolean | OverlayPluginOptions |
false |
Overlay UI config. Defaults to false unlike Vite/Webpack — overlay injection must be handled by the meta-framework wrapper. |
autoInitPath |
string |
undefined (falls back to @domscribe/next/auto-init) |
Absolute filesystem path to the auto-init module. Used in pnpm monorepos where transformed files don't directly depend on the auto-init package. Meta-framework wrappers should resolve this via require.resolve(). |
import { getInitResult } from '@domscribe/transform/plugins/turbopack';
const result = getInitResult();
// { relayHost: string | undefined, relayPort: number | undefined }Returns the relay host and port detected during loader initialization. Available after the first file is processed. Used by meta-framework wrappers (e.g., @domscribe/next) to read relay connection info after the loader has initialized.
| Subpath | Description |
|---|---|
@domscribe/transform/plugins/vite |
Vite plugin (domscribe) |
@domscribe/transform/plugins/webpack |
Webpack plugin (DomscribeWebpackPlugin) |
@domscribe/transform/webpack-loader |
Webpack loader path (string, for direct use) |
@domscribe/transform/plugins/turbopack |
Turbopack exports (getInitResult) |
@domscribe/transform/turbopack-loader |
Turbopack loader path (string, for direct use) |
Part of Domscribe.
MIT