Skip to content

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.

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.

Config validation failures are hard errors by default. Set EXTFORGE_STRICT_CONFIG=0 to downgrade them to warnings while migrating.

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' | object CSS strategy: a built-in preset ('tailwind', 'vanilla', 'none') or a custom processor object ({ name, transform } or { name, command, args }). See the Styling guide.
plugins Array<unknown> List of ExtForge plugins. Both the V1 shape and the legacy thin shape are accepted.