fix: 修复 vite 打包时,分包策略问题导致构建循环引用问题

This commit is contained in:
XiaoDaiGua-Ray 2025-05-06 09:01:11 +08:00
parent ba6ceef0dc
commit 0f2193cc14
2 changed files with 13 additions and 13 deletions

View File

@ -1,5 +1,5 @@
export const chunksCopilot = (id: string) => { export const chunksCopilot = () => {
const utilsLibOptions = 'src/utils' const utilsLibOptions = ['src/utils']
const hooksLibOptions = [ const hooksLibOptions = [
'src/hooks/components', 'src/hooks/components',
'src/hooks/template', 'src/hooks/template',
@ -7,15 +7,15 @@ export const chunksCopilot = (id: string) => {
] ]
const nodeModulesOptions = ['node_modules'] const nodeModulesOptions = ['node_modules']
// 是否为模板工程下的 utils 库
const isUtils = () => id.includes(utilsLibOptions)
// 是否为模板工程下的 hooks 库,不包含 node_modules 库
const isHooks = () =>
hooksLibOptions.some((option) => id.includes(option)) &&
!nodeModulesOptions.some((option) => id.includes(option))
// 是否为 node_modules 库 // 是否为 node_modules 库
const isNodeModules = () => const isNodeModules = (id: string) =>
nodeModulesOptions.some((option) => id.includes(option)) nodeModulesOptions.some((option) => id.includes(option))
// 是否为模板工程下的 utils 库
const isUtils = (id: string) =>
utilsLibOptions.some((option) => id.includes(option) && !isNodeModules(id))
// 是否为模板工程下的 hooks 库,不包含 node_modules 库
const isHooks = (id: string) =>
hooksLibOptions.some((option) => id.includes(option) && !isNodeModules(id))
return { return {
isUtils, isUtils,

View File

@ -17,6 +17,7 @@ export default defineConfig(({ mode }) => {
appPrimaryColor, appPrimaryColor,
base, base,
} = config } = config
const { isUtils, isHooks, isNodeModules } = chunksCopilot()
const __APP_CFG__ = { const __APP_CFG__ = {
pkg: { pkg: {
@ -71,18 +72,17 @@ export default defineConfig(({ mode }) => {
rollupOptions: { rollupOptions: {
output: { output: {
manualChunks: (id) => { manualChunks: (id) => {
const { isUtils, isHooks, isNodeModules } = chunksCopilot(id)
const index = id.includes('pnpm') ? 1 : 0 // 兼容 pnpm, yarn, npm 包管理器差异 const index = id.includes('pnpm') ? 1 : 0 // 兼容 pnpm, yarn, npm 包管理器差异
if (isUtils()) { if (isUtils(id)) {
return 'utils' return 'utils'
} }
if (isHooks()) { if (isHooks(id)) {
return 'hooks' return 'hooks'
} }
if (isNodeModules()) { if (isNodeModules(id)) {
return id return id
.toString() .toString()
.split('node_modules/')[1] .split('node_modules/')[1]