diff --git a/theme/src/client/features/components/Swiper.vue b/theme/src/client/features/components/Swiper.vue
new file mode 100644
index 000000000..1ab8d85b6
--- /dev/null
+++ b/theme/src/client/features/components/Swiper.vue
@@ -0,0 +1,206 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/theme/src/client/shim.d.ts b/theme/src/client/shim.d.ts
index e456184f0..0d9847477 100644
--- a/theme/src/client/shim.d.ts
+++ b/theme/src/client/shim.d.ts
@@ -65,3 +65,13 @@ declare module '@internal/iconify' {
icons,
}
}
+
+declare module 'swiper/css' {
+ const res: any
+ export default res
+}
+
+declare module 'swiper/css/*' {
+ const res: any
+ export default res
+}
diff --git a/theme/src/node/config/extendsBundlerOptions.ts b/theme/src/node/config/extendsBundlerOptions.ts
index bd76b1a1e..1d61fbffd 100644
--- a/theme/src/node/config/extendsBundlerOptions.ts
+++ b/theme/src/node/config/extendsBundlerOptions.ts
@@ -5,12 +5,13 @@ import {
addViteSsrNoExternal,
chainWebpack,
} from '@vuepress/helper'
+import { isPackageExists } from 'local-pkg'
import type { App } from 'vuepress'
export function extendsBundlerOptions(bundlerOptions: any, app: App): void {
addViteConfig(bundlerOptions, app, {
build: {
- chunkSizeWarningLimit: 1024,
+ chunkSizeWarningLimit: 2048,
},
})
@@ -23,6 +24,11 @@ export function extendsBundlerOptions(bundlerOptions: any, app: App): void {
'@vuepress/plugin-watermark',
])
+ if (isPackageExists('swiper')) {
+ addViteOptimizeDepsInclude(bundlerOptions, app, 'swiper', true)
+ addViteSsrNoExternal(bundlerOptions, app, ['swiper'])
+ }
+
chainWebpack(bundlerOptions, app, (config) => {
config.module
.rule('scss')