From e544082775ae7128de87182c1e2f495005de8a80 Mon Sep 17 00:00:00 2001 From: Uyarn Date: Wed, 17 Jun 2026 23:31:57 +0800 Subject: [PATCH] fix: optimize nuxt module icon request --- packages/tdesign-vue-next-nuxt/src/module.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/tdesign-vue-next-nuxt/src/module.ts b/packages/tdesign-vue-next-nuxt/src/module.ts index 9e1fe7ba39..a5490fee39 100644 --- a/packages/tdesign-vue-next-nuxt/src/module.ts +++ b/packages/tdesign-vue-next-nuxt/src/module.ts @@ -8,6 +8,7 @@ import { resolveTDesignIcons, } from './resolvers'; +import type { Nuxt } from '@nuxt/schema'; import type { ModuleOptions } from './interface'; const isNonEmptyDirectory = (path: string) => { @@ -18,6 +19,15 @@ const isNonEmptyDirectory = (path: string) => { } }; +const addOptimizeDeps = (nuxt: Nuxt, deps: string[]) => { + nuxt.options.vite ||= {}; + nuxt.options.vite.optimizeDeps ||= {}; + const include = (nuxt.options.vite.optimizeDeps.include ||= []); + for (const dep of deps) { + if (!include.includes(dep)) include.push(dep); + } +}; + const resolveLocalTDesignSource = (resolver: ReturnType, moduleMode: 'es' | 'esm') => { const componentsPath = resolver.resolve('../../components'); const sourceStyle = join(componentsPath, 'style/index.js'); @@ -57,6 +67,8 @@ export default defineNuxtModule({ nuxt.options.build.transpile.push('tdesign-vue-next'); nuxt.options.build.transpile.push('tdesign-icons-vue-next'); + addOptimizeDeps(nuxt, ['tdesign-icons-vue-next']); + if (localTDesignSource) { Object.assign(nuxt.options.alias, { 'tdesign-vue-next/es': localTDesignSource.componentsPath, @@ -68,6 +80,9 @@ export default defineNuxtModule({ nuxt.options.build.transpile.push('@tdesign/shared-hooks'); nuxt.options.build.transpile.push('@tdesign/shared-utils'); nuxt.options.build.transpile.push('@tdesign/common-js/components'); + } else { + // 使用已发布的 tdesign-vue-next(预构建 ESM):预打包它本身以及其内部依赖 lodash-es。 + addOptimizeDeps(nuxt, ['tdesign-vue-next', 'lodash-es']); } if (options.esm) {