WXT handles all bundling, tree-shaking, and manifest generation for Dispel. You never need to configure Rollup or Webpack directly — a single command produces a fully optimised, production-ready extension inDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/thePrnvBot/dispel-web-stylist/llms.txt
Use this file to discover all available pages before exploring further.
.output/. From there, a second command packages the output into a zip file suitable for upload to the Chrome Web Store or Firefox Add-ons (AMO). This page walks through the full release pipeline from a clean checkout to a store-ready artifact.
Production Build Commands
Production builds strip development tooling, apply minification, and write static assets with content hashes. Run the build for whichever browser target you are releasing:- Chrome →
.output/chrome-mv3/ - Firefox →
.output/firefox-mv3/
Creating Store Packages
Once the production build passes your testing, generate the zip archives for store submission:wxt zip (with -b firefox for the Firefox variant), which is equivalent to wxt build followed by a deterministic archive of the output directory.
Pre-Submission Checks
Run these two commands before building for store submission to catch lint violations and type errors early:bun run check
Runs
ultracite check, which executes the Biome linter and formatter across the entire src/ directory. The project extends ultracite/biome/core, ultracite/biome/react, and ultracite/biome/vitest rule sets. If any issues are found, run bun run fix to auto-fix what Biome can resolve automatically.bun run compile
Runs
tsc --noEmit against tsconfig.json, which enforces strict: true, noUnusedLocals, noUnusedParameters, noUncheckedIndexedAccess, and noImplicitReturns. No output is emitted — this is a type-check-only pass.Build Output Structure
After running all build and zip commands,.output/ contains the following:
WXT Configuration
All build behaviour is controlled bywxt.config.ts in the project root. The key options are:
modules — React HMR support
modules — React HMR support
bun run dev.srcDir — source root
srcDir — source root
src/ rather than the project root. The @/* TypeScript path alias resolves to src/*.vite alias — platform splits
vite alias — platform splits
@/platform/sidepanel import to the correct browser-specific implementation at build time. The Chrome build uses the chrome.sidePanel API; the Firefox build uses a popup-based fallback. No runtime branching is needed in the consuming code.manifest() — extension metadata and permissions
manifest() — extension metadata and permissions
storage and tabs are the only declared permissions; broad host_permissions are required so the content script can inject into any page.The
version field in manifest() inside wxt.config.ts is the canonical version source for the extension. Update it here before running bun run build and bun run zip for a new release — there is no separate version field to keep in sync.