Files
wxt/packages/module-react/modules/react.ts
T
2026-07-26 18:02:38 -05:00

47 lines
1.3 KiB
TypeScript

import 'wxt';
import { addImportPreset, addViteConfig, defineWxtModule } from 'wxt/modules';
import react, { type Options as PluginOptions } from '@vitejs/plugin-react';
import type { PluginOption } from 'vite';
export default defineWxtModule<ReactModuleOptions>({
name: '@wxt-dev/module-react',
configKey: 'react',
setup(wxt, options) {
const { vite, vitePluginsBefore } = options ?? {};
addViteConfig(wxt, () => ({
plugins: [...(vitePluginsBefore ?? []), react(vite)],
}));
addImportPreset(wxt, 'react');
// Enable auto-imports for JSX files
wxt.hook('config:resolved', (wxt) => {
// In older versions of WXT, `wxt.config.imports` could be false
if (!wxt.config.imports) return;
wxt.config.imports.dirsScanOptions ??= {};
wxt.config.imports.dirsScanOptions.filePatterns = [
// Default plus JSX/TSX
'*.{ts,js,mjs,cjs,mts,cts,jsx,tsx}',
];
});
},
});
export interface ReactModuleOptions {
vite?: PluginOptions;
/**
* Vite plugins to add before the `react()` plugin. Some plugins like the
* `@tanstack/router-plugin` need to be added before `react()` to work
* correctly.
*/
vitePluginsBefore?: PluginOption[];
}
declare module 'wxt' {
export interface InlineConfig {
react?: ReactModuleOptions;
}
}