代码拉取完成,页面将自动刷新
import { fileURLToPath, URL } from 'node:url'
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import viteCompression from 'vite-plugin-compression'
import UnoCSS from 'unocss/vite'
// https://vitejs.dev/config/
export default ({mode}:{mode:string})=>{
// 在vite.config.ts中使用环境变量
console.log('mode',loadEnv(mode, process.cwd()).VITE_BASE_URL)
return defineConfig({
plugins: [
vue(),
vueJsx(),
UnoCSS(),
AutoImport({
include: [
/\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
/\.vue$/,
/\.vue\?vue/, // .vue
/\.md$/ // .md
],
imports: ['vue', 'vue-router','pinia',{
'@/hooks/web/useI18n': ['useI18n'],
}],
dts: 'src/types/auto-components.d.ts',
resolvers: [ElementPlusResolver()]
}),
Components({
resolvers: [ElementPlusResolver()],
dirs: ['src/components','packages/components','components'],
dts: 'src/types/components.d.ts',
}),
{ //.gz
...viteCompression(),
apply: 'build',
}
],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)),
'types': fileURLToPath(new URL('./types', import.meta.url))
}
},
css:{
preprocessorOptions: {
scss: {
additionalData: `@use "@/styles/variables.scss" as *;`
},
},
},
server:{
host: '0.0.0.0',
port: 10001,
open: true,
proxy: {
'/api': {
target: '要代理的地址',
changeOrigin: true,
ws: true,
rewrite: (path: string) => path.replace(/^\/api/, ''),
},
},
},
build:{
rollupOptions:{
output:{
// 通过() => import()形式加载的组件会自动分包,第三方插件需手动分包
manualChunks: {
vue: ['vue', 'vue-router', 'pinia'],
elementIcons: ['@element-plus/icons-vue'],
},
// js和css文件夹分离
chunkFileNames: "static/js/[name]-[hash].js",
entryFileNames: "static/js/[name]-[hash].js",
assetFileNames: "static/[ext]/[name]-[hash].[ext]",
}
}
}
})
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。