Configuration reference
ExtForge reads its configuration from extforge.config.ts (or .js/.mjs) at the project root. The schema is permissive: unknown top-level keys produce a warning, not an error.
Merging behavior
Section titled “Merging behavior”Defaults and user values are deep-merged for plain-object keys (e.g. dev, build). A partial override like dev: { port: 9000 } keeps host: 'localhost', debounce: 150, and open: false from the defaults rather than dropping them. Arrays (browsers, plugins) and primitives are replaced wholesale.
Validation failures emit a warning by default; set EXTFORGE_STRICT_CONFIG=1 to fail fast. The warning path becomes the default error in v0.4.0.
Top-level keys
Section titled “Top-level keys”| Key | Type | Description |
|---|---|---|
root | string | Override the project root. Defaults to the directory extforge is invoked from. |
browsers | Array<'chrome' | 'firefox' | 'edge' | 'safari'> | Browsers to build for. ExtForge generates a per-browser manifest into dist/<browser>/. |
manifest | unknown | The MV3 manifest, ExtForge-flavored. Browser-specific quirks are handled automatically. |
build | object | |
dev | object | |
framework | 'react' | 'vanilla' | UI framework. Drives auto-injection of first-party plugins (e.g., presetReact() when set to react). |
css | 'tailwind' | 'vanilla' | 'none' | CSS strategy. |
plugins | Array<unknown> | List of ExtForge plugins. Both the V1 shape and the legacy thin shape are accepted. |