导入 AKSRT 主题开发源码
This commit is contained in:
1 parent
9681dd3d48
commit
1268a55dd0
595 files changed
+127705
No files matched your search
@@ -0,0 +1,75 @@
|
||||
import { defineConfig } from 'vite'
|
||||
import vue from '@vitejs/plugin-vue'
|
||||
import { resolve } from 'path'
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [vue()],
|
||||
root: __dirname,
|
||||
base: '',
|
||||
build: {
|
||||
outDir: 'build',
|
||||
emptyOutDir: true,
|
||||
minify: 'esbuild',
|
||||
// 注意:不 drop console/debugger,保留错误信息便于排查
|
||||
esbuild: {
|
||||
// drop: ['console', 'debugger'], ← 生产环境可开启
|
||||
},
|
||||
rollupOptions: {
|
||||
output: {
|
||||
// 入口文件带 hash,避免与动态导入的 chunk 产生命名/导出冲突
|
||||
entryFileNames: (chunkInfo) => {
|
||||
// 入口 chunk 统一命名为 index.js,确保 PHP 端稳定引用
|
||||
return 'index.js'
|
||||
},
|
||||
chunkFileNames: (chunkInfo) => {
|
||||
// vendor chunk 用稳定前缀+hash;其他 chunk(含被提取的 index 共享模块)也用固定名
|
||||
if (chunkInfo.name.includes('node_modules')) return 'vendor-[hash].js'
|
||||
// 防止 Rollup 提取的共享 chunk 名为 "index" 时与入口冲突
|
||||
if (chunkInfo.name === 'index') return 'shared-api.[hash].js'
|
||||
return '[name].[hash].js'
|
||||
},
|
||||
assetFileNames: (assetInfo) => {
|
||||
// CSS 和其他资源保持固定名
|
||||
if (assetInfo.name && assetInfo.name.endsWith('.css')) return '[name][extname]'
|
||||
return '[name].[hash][extname]'
|
||||
},
|
||||
format: 'es',
|
||||
// 手动拆分:将框架依赖独立为 vendor chunk
|
||||
// Naive UI 单包 1.3MB+,按内部子目录粗拆,提升首屏并行下载速度。
|
||||
manualChunks(id) {
|
||||
if (!id.includes('node_modules')) return undefined
|
||||
if (id.includes('node_modules/vue/')
|
||||
|| id.includes('node_modules/@vue/')
|
||||
|| id.includes('node_modules/vue-router/')
|
||||
|| id.includes('node_modules/pinia/')) {
|
||||
return 'vendor-vue'
|
||||
}
|
||||
if (id.includes('node_modules/@vicons/')) {
|
||||
return 'vendor-icons'
|
||||
}
|
||||
if (id.includes('node_modules/vuedraggable/') || id.includes('node_modules/sortablejs/')) {
|
||||
return 'vendor-draggable'
|
||||
}
|
||||
// Naive UI:内部子目录之间存在大量交叉依赖(form ⇄ core 等),
|
||||
// 按子目录拆分会产生 ESM 循环依赖,导致 "Cannot access 'X' before initialization"。
|
||||
// 因此整体打成单个 chunk,避免 TDZ 运行时错误。
|
||||
if (id.includes('node_modules/naive-ui/')) {
|
||||
return 'vendor-naive'
|
||||
}
|
||||
// 其它依赖归为通用 vendor
|
||||
return 'vendor-misc'
|
||||
},
|
||||
},
|
||||
},
|
||||
cssCodeSplit: true,
|
||||
// Naive UI 整体打成单个 vendor-naive chunk(避免子目录间循环依赖导致的 TDZ 错误)。
|
||||
// 组件库本身约 1.16MB(gzip 后 ~304KB),属于该 UI 库的合理体积,
|
||||
// 不再尝试进一步拆分,故将告警阈值上调以避免误导。
|
||||
chunkSizeWarningLimit: 1500,
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': resolve(__dirname, 'src'),
|
||||
},
|
||||
},
|
||||
})
|
||||
Reference in new issue
Block a user