初始化仓库
This commit is contained in:
103
vite.config.ts
Normal file
103
vite.config.ts
Normal file
@ -0,0 +1,103 @@
|
||||
import * as fs from 'node:fs'
|
||||
import * as path from 'node:path'
|
||||
import vue from '@vitejs/plugin-vue'
|
||||
import vueJsx from '@vitejs/plugin-vue-jsx'
|
||||
import AutoImport from 'unplugin-auto-import/vite'
|
||||
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
|
||||
import Components from 'unplugin-vue-components/vite'
|
||||
import { fileURLToPath, URL } from 'url'
|
||||
import { defineConfig } from 'vite'
|
||||
import { createStyleImportPlugin, ElementPlusResolve } from 'vite-plugin-style-import'
|
||||
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
|
||||
import vueSetupExtend from 'vite-plugin-vue-setup-extend'
|
||||
// import legacyPlugin from '@vitejs/plugin-legacy'
|
||||
// https://vitejs.dev/config/
|
||||
|
||||
function getElementPlusStylePaths() {
|
||||
const componentsDir = path.resolve(
|
||||
__dirname,
|
||||
'node_modules',
|
||||
'element-plus',
|
||||
'es',
|
||||
'components'
|
||||
)
|
||||
const componentDirs = fs.readdirSync(componentsDir)
|
||||
|
||||
const stylePaths: string[] = []
|
||||
|
||||
// 遍历每个组件文件夹,检查是否有 `style/css` 文件
|
||||
componentDirs.forEach((dir) => {
|
||||
const stylePath = path.join(componentsDir, dir, 'style', 'index.mjs')
|
||||
if (fs.existsSync(stylePath)) {
|
||||
stylePaths.push(`element-plus/es/components/${dir}/style/css`)
|
||||
}
|
||||
})
|
||||
|
||||
return stylePaths
|
||||
}
|
||||
|
||||
export default defineConfig({
|
||||
base: '/admin/',
|
||||
server: {
|
||||
host: '0.0.0.0',
|
||||
hmr: true,
|
||||
open: true
|
||||
},
|
||||
plugins: [
|
||||
vue(),
|
||||
vueJsx(),
|
||||
AutoImport({
|
||||
imports: ['vue', 'vue-router'],
|
||||
resolvers: [ElementPlusResolver()],
|
||||
eslintrc: {
|
||||
enabled: true
|
||||
}
|
||||
}),
|
||||
Components({
|
||||
directoryAsNamespace: true,
|
||||
resolvers: [ElementPlusResolver()]
|
||||
}),
|
||||
createStyleImportPlugin({
|
||||
resolves: [ElementPlusResolve()]
|
||||
}),
|
||||
createSvgIconsPlugin({
|
||||
// 配置路劲在你的src里的svg存放文件
|
||||
iconDirs: [fileURLToPath(new URL('./src/assets/icons', import.meta.url))],
|
||||
symbolId: 'local-icon-[dir]-[name]'
|
||||
}),
|
||||
vueSetupExtend()
|
||||
],
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': fileURLToPath(new URL('./src', import.meta.url))
|
||||
}
|
||||
},
|
||||
css: {
|
||||
preprocessorOptions: {
|
||||
scss: {
|
||||
api: 'modern-compiler'
|
||||
}
|
||||
}
|
||||
},
|
||||
optimizeDeps: {
|
||||
// 确保不重复包含这些依赖
|
||||
include: ['@wangeditor/editor-for-vue', 'vue-echarts', ...getElementPlusStylePaths()]
|
||||
},
|
||||
build: {
|
||||
rollupOptions: {
|
||||
output: {
|
||||
manualChunks(id) {
|
||||
if (id.includes('node_modules')) {
|
||||
return id.toString().split('node_modules/')[1].split('/')[0].toString()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
define: {
|
||||
__VUE_PROD_DEVTOOLS__: false,
|
||||
__VUE_OPTIONS_API__: true,
|
||||
__VUE_PROD_HYDRATION__: true,
|
||||
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: false
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user