Files
shopxo-diy/vite.config.ts
sws 4332aa1e32 ### 优化与修复
1. 优化加载动画:调整加载动画的时长设置,以增强用户体验。由500毫秒调整至1000毫秒,确保页面完全加载后动画再消失。
2. 修复图片路径引用:在`model-coupon-setting`组件中,修正图片路径引用方式。使用`ref`来异步获取图片路径,并解决在`onBeforeMount`钩子中设置路径的问题。
3. 调整文件输出路径:在`vite.config.ts`中,修改文件的输出路径以优化资源管理。将`chunk`和`entryFileNames`的路径从`static/admin/default/diy`调整为`static/diy`,以适应最新的资源组织结构。
4. 重构布局模板:在`layout/index.vue`中,对布局模板进行重构,以提高代码的可读性和维护性。通过`loading_content`状态管理加载动画的显示与隐藏,更清晰地控制页面的渲染流程。

通过这些改进,系统性能和稳定性得到进一步提升,同时也优化了开发和维护的便利性。
2024-09-06 13:40:59 +08:00

126 lines
4.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import vue from '@vitejs/plugin-vue';
import { UserConfig, ConfigEnv, loadEnv, defineConfig } from 'vite';
import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite';
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
import path from 'path';
const pathSrc = path.resolve(__dirname, 'src');
// https://vitejs.dev/config/
export default defineConfig(({ mode }: ConfigEnv): UserConfig => {
const env = loadEnv(mode, process.cwd());
return {
resolve: {
alias: {
'@': pathSrc,
},
},
css: {
// CSS 预处理器
preprocessorOptions: {
//define global scss variable
scss: {
javascriptEnabled: true,
additionalData: `@use "@/styles/variables.scss" as *;`,
},
},
},
server: {
host: '0.0.0.0',
port: Number(env.VITE_APP_PORT),
open: true, // 运行是否自动打开浏览器
proxy: {
// 反向代理解决跨域
[env.VITE_APP_BASE_API]: {
target: env.VITE_APP_BASE_API_URL, // 接口地址
changeOrigin: true,
rewrite: (path) => path.replace(new RegExp('^' + env.VITE_APP_BASE_API), ''), // 替换 /dev-api 为 target 接口地址
},
},
},
plugins: [
vue({
script: {
// 开启defineModel配置
defineModel: true,
},
}),
AutoImport({
// 自动导入 Vue 相关函数ref, reactive, toRef 等
imports: ['vue', '@vueuse/core'],
eslintrc: {
enabled: true,
filepath: './.eslintrc-auto-import.json',
globalsPropValue: true,
},
resolvers: [
// 自动导入 Element Plus 相关函数ElMessage, ElMessageBox... (带样式)------若是没有自动引入,请耐心等待,反应特别慢,希望以后可以优化
ElementPlusResolver(),
],
vueTemplate: true,
// 配置文件生成位置(false:关闭自动生成)
// dts: false,
dts: path.resolve(pathSrc, 'types', 'auto-imports.d.ts'), // 指定自动导入函数TS类型声明文件路径
}),
Components({
resolvers: [
// 自动导入 Element Plus 组件
ElementPlusResolver(),
],
dirs: ['src/**/components'],
// 配置文件生成位置(false:关闭自动生成)
// dts:false,
dts: path.resolve(pathSrc, 'types', 'components.d.ts'), // 指定自动导入组件TS类型声明文件路径
}),
],
// 构建配置
build: {
target: 'esnext',
// 打包不压缩图片为base64
assetsInlineLimit: 0,
// 混淆器设置
minify: 'terser',
// 不生成source map文件默认false
sourcemap: false,
// 指定输出路径(相对于项目根目录)默认dist
outDir: 'dist',
// 指定生成静态资源的存放路径默认assets
assetsDir: 'assets',
// chunk大小警告限制默认500kbs
chunkSizeWarningLimit: 1500,
// 是否禁用css拆分(默认true)设置false时所有CSS将被提取到一个CSS文件中
cssCodeSplit: true,
// 简要配置
terserOptions: {
compress: {
// 移除console
drop_console: false,
// 移除debugger
drop_debugger: true,
},
// 保留类名
keep_classnames: true,
format: {
// 移除所有的注释
comments: false,
},
},
// js、css等文件打包到不同文件夹
rollupOptions: {
output: {
// 自定义 chunk 文件的输出路径和文件名格式
chunkFileNames: 'static/diy/js/chunk/[name]-[hash].js',
// 自定义 entry chunk 的输出路径和文件名格式
entryFileNames: 'static/diy/js/entry/[name]-[hash].js',
//非js文件夹按照文件类型分类css,png,jpg
assetFileNames: 'static/diy/[ext]/[name]-[hash].[ext]',
},
},
},
};
});