P粉8777196942023-08-25 14:42:21
You can change the esbuild configuration by treating all js files as jsx using the loader
option:
// vite.config.ts import {defineConfig} from 'vite' // https://vitejs.dev/config/ export default defineConfig(() => ({ esbuild: { loader: "tsx", // OR "jsx" include: [ // Add this for business-as-usual behaviour for .jsx and .tsx files "src/**/*.jsx", "src/**/*.tsx", "node_modules/**/*.jsx", "node_modules/**/*.tsx", // Add the specific files you want to allow JSX syntax in "src/LocalJsxInJsComponent.js", "node_modules/bad-jsx-in-js-component/index.js", "node_modules/bad-jsx-in-js-component/js/BadJSXinJS.js", "node_modules/bad-jsx-in-js-component/ts/index.ts", "node_modules/bad-jsx-in-js-component/ts/BadTSXinTS.ts", // --- OR --- // Add these lines to allow all .js files to contain JSX "src/**/*.js", "node_modules/**/*.js", // Add these lines to allow all .ts files to contain JSX "src/**/*.ts", "node_modules/**/*.ts", ], }, }));
Note: Using the .jsx loader to load .js files will cause performance losses.
The answer comes from this discussion on Vite's GitHub, marking the incorrect (old) answer as "correct".
Original answer does not work properly in vite build
, only in vite dev
. The current version works with both in vite@^4.0.0
.
A sample repository where you can clone and test your solution.