API Stability Notice
Macroforge is under active development. The API is not yet stable and may change between versions. Some documentation sections may be outdated.
Vite Plugin
The Vite plugin provides build-time macro expansion, transforming your code during development and production builds.
Installation
Bash
npm install -D @macroforge/vite-pluginConfiguration
Add the plugin to your vite.config.ts:
vite.config.ts
import macroforge from "@macroforge/vite-plugin";
import { defineConfig } from "vite";
export default defineConfig({
plugins: [
macroforge()
]
});Options
TypeScript
macroforge({
// Generate .d.ts files for expanded code
generateTypes: true,
// Output directory for generated types
typesOutputDir: ".macroforge/types",
// Emit metadata files for debugging
emitMetadata: false,
// Keep @derive decorators in output (for debugging)
keepDecorators: false,
// File patterns to process
include: ["**/*.ts", "**/*.tsx"],
exclude: ["node_modules/**"]
})Option Reference
| Option | Type | Default | Description |
|---|---|---|---|
generateTypes | boolean | true | Generate .d.ts files |
typesOutputDir | string | .macroforge/types | Where to write type files |
emitMetadata | boolean | false | Emit macro metadata files |
keepDecorators | boolean | false | Keep decorators in output |
Framework Integration
React (Vite)
vite.config.ts
import macroforge from "@macroforge/vite-plugin";
import react from "@vitejs/plugin-react";
import { defineConfig } from "vite";
export default defineConfig({
plugins: [
macroforge(), // Before React plugin
react()
]
});SvelteKit
vite.config.ts
import macroforge from "@macroforge/vite-plugin";
import { sveltekit } from "@sveltejs/kit/vite";
import { defineConfig } from "vite";
export default defineConfig({
plugins: [
macroforge(), // Before SvelteKit
sveltekit()
]
}); Note
Always place the Macroforge plugin before other framework plugins to ensure macros are expanded first.
Development Server
During development, the plugin:
- Watches for file changes
- Expands macros on save
- Provides HMR support for expanded code
Production Build
During production builds, the plugin:
- Expands all macros in the source files
- Generates type declaration files
- Strips
@derivedecorators from output