66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
import { defineConfig } from "vite";
|
|
import vue from "@vitejs/plugin-vue";
|
|
import path from "path";
|
|
|
|
import AutoImport from "unplugin-auto-import/vite";
|
|
import Components from "unplugin-vue-components/vite";
|
|
import { ElementPlusResolver } from "unplugin-vue-components/resolvers";
|
|
|
|
export default defineConfig({
|
|
// 开发服务器配置(可选,解决跨域等问题)
|
|
// server: {
|
|
// host: "0.0.0.0", // 允许局域网访问
|
|
// port: 5173, // 自定义端口
|
|
// open: true, // 启动后自动打开浏览器
|
|
// },
|
|
plugins: [
|
|
vue(),
|
|
// 自动导入 Vue/VueRouter/Element Plus API
|
|
AutoImport({
|
|
imports: ["vue", "vue-router"],
|
|
resolvers: [ElementPlusResolver({ importStyle: "css" })],
|
|
dts: path.resolve(__dirname, "src/auto-imports.d.ts"),
|
|
eslintrc: {
|
|
enabled: true,
|
|
filepath: path.resolve(__dirname, ".eslintrc-auto-import.json"),
|
|
},
|
|
}),
|
|
// 自动导入 Element Plus 组件
|
|
Components({
|
|
dirs: ["src/components"],
|
|
resolvers: [ElementPlusResolver({ importStyle: "css" })],
|
|
dts: path.resolve(__dirname, "src/components.d.ts"),
|
|
}),
|
|
],
|
|
resolve: {
|
|
alias: {
|
|
"@": path.resolve(__dirname, "src"),
|
|
},
|
|
// 省略文件扩展名,导入时无需写 .vue/.scss/.js
|
|
extensions: [
|
|
".mjs",
|
|
".js",
|
|
".ts",
|
|
".jsx",
|
|
".tsx",
|
|
".json",
|
|
".vue",
|
|
".less",
|
|
],
|
|
},
|
|
css: {
|
|
preprocessorOptions: {
|
|
less: {
|
|
// 全局注入:用函数判断,避免给 global.less 自身注入导致循环导入
|
|
additionalData: (content, filename) => {
|
|
if (!filename.includes("global.less")) {
|
|
return `@import "@/assets/less/global.less";${content}`;
|
|
}
|
|
return content;
|
|
},
|
|
charset: false,
|
|
},
|
|
},
|
|
},
|
|
});
|