You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
3.9 KiB
154 lines
3.9 KiB
import { defineConfig } from "vite";
|
|
import vue from "@vitejs/plugin-vue";
|
|
import * as path from "path";
|
|
import { viteMockServe } from "vite-plugin-mock";
|
|
import viteCompression from "vite-plugin-compression";
|
|
import AutoImport from "unplugin-auto-import/vite";
|
|
import Components from "unplugin-vue-components/vite";
|
|
import { ElementPlusResolver } from "unplugin-vue-components/resolvers";
|
|
import {
|
|
createStyleImportPlugin,
|
|
ElementPlusResolve,
|
|
} from "vite-plugin-style-import";
|
|
import VueSetupExtend from "vite-plugin-vue-setup-extend";
|
|
import Unocss from "unocss/vite";
|
|
import {
|
|
presetAttributify,
|
|
presetIcons,
|
|
presetUno,
|
|
transformerDirectives,
|
|
transformerVariantGroup,
|
|
} from "unocss";
|
|
import ElementPlus from "unplugin-element-plus/vite";
|
|
export default defineConfig({
|
|
base: "./", //打包路径
|
|
plugins: [
|
|
vue({
|
|
// refTransform: true //开启ref转换 使用$ref
|
|
}),
|
|
// ElementPlus({
|
|
// useSource: true,
|
|
// }),
|
|
VueSetupExtend(), //jiejue setup无法添加name问题
|
|
// gzip压缩 生产环境生成 .gz 文件
|
|
viteCompression({
|
|
verbose: true,
|
|
disable: false,
|
|
threshold: 10240,
|
|
algorithm: "gzip",
|
|
ext: ".gz",
|
|
}),
|
|
AutoImport({
|
|
imports: ["vue", "vue-router"],
|
|
}),
|
|
viteMockServe({
|
|
//Mock服务自动注册
|
|
mockPath: "./src/mock",
|
|
localEnabled: true,
|
|
prodEnabled: true,
|
|
}),
|
|
// Unocss({
|
|
// presets: [
|
|
// presetUno(),
|
|
// presetAttributify(),
|
|
// presetIcons({
|
|
// scale: 1.2,
|
|
// warn: true,
|
|
// }),
|
|
// ],
|
|
// transformers: [transformerDirectives(), transformerVariantGroup()],
|
|
// }),
|
|
// Components({ //自动注册组件
|
|
// dts:true,
|
|
// resolvers: [ElementPlusResolver(
|
|
// {
|
|
// importStyle:'sass'
|
|
// }
|
|
// )],
|
|
// }),
|
|
// createStyleImportPlugin({ //自动导入框架样式
|
|
// resolves: [
|
|
// ElementPlusResolve(),
|
|
// ],
|
|
// // 自定义规则
|
|
// libs: [
|
|
// {
|
|
// libraryName: 'element-plus',
|
|
// esModule: true,
|
|
// resolveStyle: (name) => {
|
|
// return `element-plus/lib/theme-chalk/${name}.css`
|
|
// }
|
|
// }
|
|
// ]
|
|
// })
|
|
],
|
|
// 配置别名
|
|
resolve: {
|
|
alias: {
|
|
"@": path.resolve(__dirname, "src"),
|
|
},
|
|
extensions: [".js", ".ts", ".json", ".vue"], //导入文件省略后缀
|
|
},
|
|
//启动服务配置
|
|
server: {
|
|
open: true,
|
|
https: false,
|
|
strictPort: true,
|
|
port: 3001,
|
|
proxy: {
|
|
// 选项写法
|
|
// "/api": {
|
|
// target: "http://47.96.87.129:8002/",
|
|
// changeOrigin: true,
|
|
// rewrite: (path) => path.replace(/^\/api/, ""),
|
|
// },
|
|
// // 正则表达式写法
|
|
// "^/fallback/.*": {
|
|
// target: "http://jsonplaceholder.typicode.com",
|
|
// changeOrigin: true,
|
|
// rewrite: (path) => path.replace(/^\/fallback/, ""),
|
|
// },
|
|
// // 使用 proxy 实例
|
|
// "/api1": {
|
|
// target: "http://jsonplaceholder.typicode.com",
|
|
// changeOrigin: true,
|
|
// configure: (proxy, options) => {
|
|
// // proxy 是 'http-proxy' 的实例
|
|
// },
|
|
// },
|
|
},
|
|
},
|
|
//css全局预处理器
|
|
css: {
|
|
preprocessorOptions: {
|
|
scss: {
|
|
additionalData: '@use "@/assets/style/theme.scss" as *;',
|
|
},
|
|
},
|
|
postcss: {
|
|
plugins: [
|
|
// 移除打包element时的@charset警告
|
|
{
|
|
postcssPlugin: "internal:charset-removal",
|
|
AtRule: {
|
|
charset: (atRule) => {
|
|
if (atRule.name === "charset") {
|
|
atRule.remove();
|
|
}
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
},
|
|
// 生产环境打包配置
|
|
//去除 console debugger
|
|
// build: {
|
|
// terserOptions: {
|
|
// compress: {
|
|
// drop_console: true,
|
|
// drop_debugger: true,
|
|
// },
|
|
// },
|
|
// },
|
|
});
|