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')