Skip to content

Commit 52f9f08

Browse files
committed
perf: prefer native filter
1 parent a83d809 commit 52f9f08

File tree

4 files changed

+19
-20
lines changed

4 files changed

+19
-20
lines changed

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,7 @@
6868
"@babel/plugin-syntax-typescript": "^7.27.1",
6969
"@vue/babel-plugin-jsx": "^1.5.0",
7070
"@vue/babel-preset-jsx": "^1.4.0",
71-
"unplugin": "^2.3.9",
72-
"unplugin-utils": "^0.3.0"
71+
"unplugin": "^2.3.9"
7372
},
7473
"devDependencies": {
7574
"@sxzz/eslint-config": "^7.1.4",

src/core/options.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { VueJSXPluginOptions } from '@vue/babel-plugin-jsx'
2-
import type { FilterPattern } from 'unplugin-utils'
2+
import type { FilterPattern } from 'unplugin'
33

44
export type Options = {
55
include?: FilterPattern
@@ -18,7 +18,7 @@ export type OptionsResolved = Overwrite<
1818
export function resolveOptions(options: Options): OptionsResolved {
1919
return {
2020
...options,
21-
include: options.include || [/\.[jt]sx?$/],
21+
include: options.include || [/\.[jt]sx$/],
2222
exclude: options.exclude || [/node_modules/],
2323
sourceMap: options.sourceMap ?? true,
2424
}

src/core/vue.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ function isTS(id: string): boolean {
1111
export function transformVueJsx(
1212
code: string,
1313
id: string,
14-
options: OptionsResolved,
14+
options: Omit<OptionsResolved, 'include' | 'exclude'>,
1515
): { code: string; map: any } | undefined {
1616
const transformOptions: TransformOptions = {
1717
babelrc: false,

src/index.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
import { createUnplugin, type UnpluginInstance } from 'unplugin'
2-
import { createFilter } from 'unplugin-utils'
32
import { resolveOptions, type Options } from './core/options'
43
import { transformVueJsx } from './core/vue'
54

65
const VueJsx: UnpluginInstance<Options | undefined, false> = createUnplugin(
76
(userOptions = {}) => {
8-
const options = resolveOptions(userOptions)
9-
const filter = createFilter(options.include, options.exclude)
7+
const { include, exclude, enforce, ...options } =
8+
resolveOptions(userOptions)
109

1110
return {
1211
name: 'unplugin-vue-jsx',
13-
enforce: options.enforce,
12+
enforce,
1413

15-
transformInclude(id) {
16-
return filter(id)
17-
},
18-
19-
transform(code, id) {
20-
const result = transformVueJsx(code, id, options)
21-
if (!result?.code) return
22-
return {
23-
code: result.code,
24-
map: result.map as any,
25-
}
14+
transform: {
15+
filter: {
16+
id: { include, exclude },
17+
},
18+
handler(code, id) {
19+
const result = transformVueJsx(code, id, options)
20+
if (!result?.code) return
21+
return {
22+
code: result.code,
23+
map: result.map as any,
24+
}
25+
},
2626
},
2727
}
2828
},

0 commit comments

Comments
 (0)