branchErp/vite.config.js
2025-09-24 11:51:35 +08:00

126 lines
3.6 KiB
JavaScript
Raw Permalink 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 vueJsx from "@vitejs/plugin-vue-jsx";
import path from "path";
import AutoImport from "unplugin-auto-import/vite";
import { ElementPlusResolver, NaiveUiResolver } from "unplugin-vue-components/resolvers";
import Components from "unplugin-vue-components/vite";
import { loadEnv } from "vite";
import vitePluginCompression from "vite-plugin-compression";
import { createHtmlPlugin } from "vite-plugin-html";
import Inspect from "vite-plugin-inspect";
import requireTransform from "vite-plugin-require-transform";
import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
import vueDevTools from 'vite-plugin-vue-devtools';
import svgLoader from "vite-svg-loader";
export default ({ mode }) => {
const env = loadEnv(mode, process.cwd());
return {
envDir: "./env",
plugins: [
vue(),
vueDevTools({
enabled: 'trae',
}),
// vueDevTools({
// launchEditor: 'webstorm',
// }),
vueJsx(),
Inspect(),
vueDevTools(),
requireTransform({
fileRegex: /.vue$|.png$|.ts$|.jpg$|.svg$/,
}), //配置require
createSvgIconsPlugin({
iconDirs: [path.resolve(process.cwd(), "src/icons")],
symbolId: "icon-[dir]-[name]",
}),
vitePluginCompression(),
AutoImport({
imports: [
"vue",
{
"naive-ui": [
"useDialog",
"useMessage",
"useNotification",
"useLoadingBar",
],
},
],
resolvers: [ElementPlusResolver()], // 合并 ElementPlus 的配置
}),
Components({
resolvers: [NaiveUiResolver(), ElementPlusResolver()], // 合并组件解析器
dirs: ["src/components"],
extensions: ["vue"],
deep: true,
}),
Components({
resolvers: [ElementPlusResolver()],
}),
svgLoader(),
createHtmlPlugin({
inject: {
data: {
title: env.VITE_APP_TITLE || "管理系统",
},
},
}),
],
css: {
preprocessorOptions: {
scss: {
additionalData: '@import "@/assets/css/common.scss";',
// 在开发过程中关闭Sass弃用警告如@import
silenceDeprecations: ["import", "global-builtin"],
// 使用现代编译器API来避免遗留的JS API警告
api: "modern-compiler",
// 只显示我们代码中的弃用,不显示依赖关系
quietDeps: true,
},
},
},
resolve: {
extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"],
alias: [
{
find: "@/",
replacement: path.resolve(process.cwd(), "src") + "/",
},
],
},
server: {
host: "0.0.0.0", // 监听所有网络接口
open: true,
hmr: true,
},
logLevel: "error",
build: {
minify: "esbuild", // 由 terser 改为 esbuild构建速度提升约 20-40%
sourcemap: false, // 关闭 sourcemap 生成,减少构建时间
reportCompressedSize: false, // 关闭压缩大小报告,减少构建时间
rollupOptions: {
output: {
manualChunks: {
// 优化分包策略,提高缓存效率
"vue-vendor": ["vue", "vue-router", "pinia"],
"naive-ui": ["naive-ui"],
"element-plus": ["element-plus"],
},
},
},
terserOptions: {
// 清除console和debugger
compress: {
// drop_console: true,
drop_debugger: true,
},
},
},
};
};