From 041d15cff24011a86ff25b39e12347f3944876f6 Mon Sep 17 00:00:00 2001 From: zhiyuanzmj <260480378@qq.com> Date: Wed, 27 Nov 2024 10:09:03 +0800 Subject: [PATCH 1/3] feat: add isGlobalElement option --- packages/babel-plugin-jsx/src/interface.ts | 2 ++ packages/babel-plugin-jsx/src/utils.ts | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/babel-plugin-jsx/src/interface.ts b/packages/babel-plugin-jsx/src/interface.ts index e2aa08e0..c403c9dd 100644 --- a/packages/babel-plugin-jsx/src/interface.ts +++ b/packages/babel-plugin-jsx/src/interface.ts @@ -20,6 +20,8 @@ export interface VueJSXPluginOptions { mergeProps?: boolean; /** configuring custom elements */ isCustomElement?: (tag: string) => boolean; + /** configuring global elements */ + isGlobalElement?: (tag: string) => boolean; /** enable object slots syntax */ enableObjectSlots?: boolean; /** Replace the function used when compiling JSX expressions */ diff --git a/packages/babel-plugin-jsx/src/utils.ts b/packages/babel-plugin-jsx/src/utils.ts index 6e1d24de..db5790af 100644 --- a/packages/babel-plugin-jsx/src/utils.ts +++ b/packages/babel-plugin-jsx/src/utils.ts @@ -109,7 +109,9 @@ export const getTag = ( ? t.identifier(name) : state.opts.isCustomElement?.(name) ? t.stringLiteral(name) - : t.callExpression(createIdentifier(state, 'resolveComponent'), [ + : state.opts.isGlobalElement?.(name) + ? t.identifier(name) + : t.callExpression(createIdentifier(state, 'resolveComponent'), [ t.stringLiteral(name), ]); } From 70a6e166decd4aa98860cd085c6fdeb2576ffe8b Mon Sep 17 00:00:00 2001 From: zhiyuanzmj <260480378@qq.com> Date: Wed, 27 Nov 2024 20:40:58 +0800 Subject: [PATCH 2/3] chore: update readme --- packages/babel-plugin-jsx/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/babel-plugin-jsx/README.md b/packages/babel-plugin-jsx/README.md index 53eb7887..1bbe7309 100644 --- a/packages/babel-plugin-jsx/README.md +++ b/packages/babel-plugin-jsx/README.md @@ -51,6 +51,14 @@ Default: `undefined` configuring custom elements +#### isGlobalElement + +Type: `(tag: string) => boolean` + +Default: `undefined` + +configuring global elements so that they don't need to be wrapped by `resolveComponent`. + #### mergeProps Type: `boolean` From 8bae9bb8e45335b8846ad1b13311b74ad2b53148 Mon Sep 17 00:00:00 2001 From: zhiyuanzmj <260480378@qq.com> Date: Wed, 27 Nov 2024 20:43:18 +0800 Subject: [PATCH 3/3] fix: format --- packages/babel-plugin-jsx/src/utils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/babel-plugin-jsx/src/utils.ts b/packages/babel-plugin-jsx/src/utils.ts index db5790af..8fcb2046 100644 --- a/packages/babel-plugin-jsx/src/utils.ts +++ b/packages/babel-plugin-jsx/src/utils.ts @@ -112,8 +112,8 @@ export const getTag = ( : state.opts.isGlobalElement?.(name) ? t.identifier(name) : t.callExpression(createIdentifier(state, 'resolveComponent'), [ - t.stringLiteral(name), - ]); + t.stringLiteral(name), + ]); } return t.stringLiteral(name);