crx() function is the main entry point for the CRXJS Vite Plugin. It returns an array of Vite plugins that handle all aspects of Chrome Extension development, including manifest processing, content scripts, background scripts, HMR, and more.
Signature
Parameters
Your Chrome Extension manifest configuration. Can be:
- A
ManifestV3object - A
Promise<ManifestV3> - A function
(env: ConfigEnv) => ManifestV3 | Promise<ManifestV3>
defineManifest() for best type safety.Configuration for content script handling.
Custom code to inject at the beginning of content scripts. Set to
false to disable.Timeout in milliseconds for HMR connections in content scripts.
Whether to automatically inject CSS into content scripts. Default:
true.Target browser for the extension. Default:
'chrome'.Set to 'firefox' when building for Firefox to enable Firefox-specific manifest handling.Returns
An array of Vite plugins that collectively handle Chrome Extension development. This includes plugins for:
- Manifest processing and validation
- Background script bundling
- Content script handling (static, dynamic, and declared)
- Hot module replacement (HMR)
- Web accessible resources
- CSS injection
- Public asset handling
Usage
Basic Usage
vite.config.ts
With defineManifest
vite.config.ts
With Options
vite.config.ts
Dynamic Manifest
vite.config.ts
Plugin Architecture
Thecrx() function returns an array of internal plugins that work together:
- pluginOptionsProvider: Provides options to other plugins
- pluginBackground: Handles service worker and background scripts
- pluginContentScripts: Processes content scripts
- pluginDeclaredContentScripts: Handles manifest-declared content scripts
- pluginDynamicContentScripts: Handles dynamically registered content scripts
- pluginFileWriter: Writes processed files to disk
- pluginFileWriterPublic: Handles public directory assets
- pluginFileWriterPolyfill: Adds browser API polyfills
- pluginHtmlInlineScripts: Handles inline scripts in HTML
- pluginWebAccessibleResources: Processes web accessible resources
- pluginContentScriptsCss: Handles content script CSS injection
- pluginHMR: Provides hot module replacement
- pluginManifest: Generates the final manifest.json
- pluginPrint: Prints build information
See Also
- chromeExtension() - Alias for
crx() - defineManifest() - Helper for defining manifests
- CrxPlugin - Custom plugin interface