diff --git a/packages/vant-cli/package.json b/packages/vant-cli/package.json index 454d16e2e69..57ad87f061e 100644 --- a/packages/vant-cli/package.json +++ b/packages/vant-cli/package.json @@ -39,6 +39,7 @@ "@rsbuild/plugin-sass": "^1.5.2", "@rsbuild/plugin-vue": "^1.2.8", "@rsbuild/plugin-vue-jsx": "^2.0.1", + "vue-jsx-vapor": "3.2.17", "@vant/touch-emulator": "workspace:^", "@vitejs/plugin-vue": "^5.2.4", "@vitejs/plugin-vue-jsx": "^4.2.0", diff --git a/packages/vant-cli/src/compiler/compile-site.ts b/packages/vant-cli/src/compiler/compile-site.ts index 9192ac0b54e..bc777045889 100644 --- a/packages/vant-cli/src/compiler/compile-site.ts +++ b/packages/vant-cli/src/compiler/compile-site.ts @@ -41,7 +41,7 @@ export async function compileSite(isProd = false) { const { createRsbuild } = await import('@rsbuild/core'); const { pluginVue } = await import('@rsbuild/plugin-vue'); - const { pluginVueJsx } = await import('@rsbuild/plugin-vue-jsx'); + const { default: pluginVueJsx } = await import('vue-jsx-vapor/rsbuild'); const { pluginBabel } = await import('@rsbuild/plugin-babel'); const { pluginSass } = await import('@rsbuild/plugin-sass'); const { pluginLess } = await import('@rsbuild/plugin-less'); @@ -58,7 +58,9 @@ export async function compileSite(isProd = false) { exclude: /[\\/]node_modules[\\/]/, }), pluginVue(), - pluginVueJsx(), + pluginVueJsx({ + interop: true, + }), pluginSass(), pluginLess(), ], diff --git a/packages/vant/package.json b/packages/vant/package.json index eddd82a54ef..28b1a199ee8 100644 --- a/packages/vant/package.json +++ b/packages/vant/package.json @@ -70,6 +70,7 @@ "typescript": "^5.9.3", "rstest-canvas-mock": "^0.0.5", "vue": "^3.5.35", + "vue-jsx-vapor": "3.2.17", "vue-router": "^5.0.6" }, "sideEffects": [ diff --git a/packages/vant/rstest.config.mts b/packages/vant/rstest.config.mts index ddd5185fa0e..5cd1401c9d3 100644 --- a/packages/vant/rstest.config.mts +++ b/packages/vant/rstest.config.mts @@ -1,14 +1,19 @@ import { defineConfig, type ProjectConfig } from '@rstest/core'; import { pluginBabel } from '@rsbuild/plugin-babel'; import { pluginVue } from '@rsbuild/plugin-vue'; -import { pluginVueJsx } from '@rsbuild/plugin-vue-jsx'; +import vueJsxCompiler from 'vue-jsx-vapor/rsbuild'; const commonConfig: ProjectConfig = { plugins: [ pluginBabel({ include: /\.(?:jsx|tsx)$/, }), - pluginVueJsx(), + vueJsxCompiler({ + interop: true, + compiler: { + runtimeModuleName: 'vue-jsx-vapor', // for SSR tests + }, + }), pluginVue(), ], globals: true, diff --git a/packages/vant/src/action-bar/test/__snapshots__/demo-ssr.spec.ts.snap b/packages/vant/src/action-bar/test/__snapshots__/demo-ssr.spec.ts.snap index c6333eaf237..b1db7a9aa07 100644 --- a/packages/vant/src/action-bar/test/__snapshots__/demo-ssr.spec.ts.snap +++ b/packages/vant/src/action-bar/test/__snapshots__/demo-ssr.spec.ts.snap @@ -17,6 +17,7 @@ exports[`should render demo and match snapshot 1`] = ` > + Icon1
+ Icon2
+ Icon3