Skip to content

Commit f8260e8

Browse files
underfinsapphi-red
andcommitted
feat: add oxc jsxInclude and jsxExclude (#63)
Co-authored-by: 翠 / green <[email protected]>
1 parent 395842b commit f8260e8

File tree

1 file changed

+35
-2
lines changed
  • packages/vite/src/node/plugins

1 file changed

+35
-2
lines changed

packages/vite/src/node/plugins/oxc.ts

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ export interface OxcOptions extends OxcTransformOptions {
2424
include?: string | RegExp | string[] | RegExp[]
2525
exclude?: string | RegExp | string[] | RegExp[]
2626
jsxInject?: string
27+
jsxInclude?: string | RegExp | string[] | RegExp[]
28+
jsxExclude?: string | RegExp | string[] | RegExp[]
2729
}
2830

2931
export async function transformWithOxc(
@@ -176,9 +178,26 @@ export async function transformWithOxc(
176178

177179
export function oxcPlugin(config: ResolvedConfig): Plugin {
178180
const options = config.oxc as OxcOptions
179-
const { jsxInject, include, exclude, ...oxcTransformOptions } = options
181+
const {
182+
jsxInject,
183+
include,
184+
exclude,
185+
jsxInclude,
186+
jsxExclude,
187+
...oxcTransformOptions
188+
} = options
180189

181-
const filter = createFilter(include || /\.(m?ts|[jt]sx)$/, exclude || /\.js$/)
190+
const defaultInclude = Array.isArray(include)
191+
? include
192+
: [include || /\.(m?ts|[jt]sx)$/]
193+
const filter = createFilter(
194+
defaultInclude.concat(jsxInclude || []),
195+
exclude || /\.js$/,
196+
)
197+
const jsxFilter = createFilter(
198+
jsxInclude || /\.jsx$/,
199+
jsxExclude || /\.(m?[jt]s|tsx)$/,
200+
)
182201

183202
let server: ViteDevServer
184203

@@ -189,6 +208,20 @@ export function oxcPlugin(config: ResolvedConfig): Plugin {
189208
},
190209
async transform(code, id) {
191210
if (filter(id) || filter(cleanUrl(id))) {
211+
// disable refresh at ssr
212+
if (
213+
this.environment.config.consumer === 'server' &&
214+
oxcTransformOptions.jsx?.refresh
215+
) {
216+
oxcTransformOptions.jsx.refresh = false
217+
}
218+
if (
219+
(jsxFilter(id) || jsxFilter(cleanUrl(id))) &&
220+
!oxcTransformOptions.lang
221+
) {
222+
oxcTransformOptions.lang = 'jsx'
223+
}
224+
192225
const result = await transformWithOxc(
193226
this,
194227
code,

0 commit comments

Comments
 (0)