123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- import { loadEnv, defineConfig } from "vite";
- import vue from "@vitejs/plugin-vue";
- // import { createStyleImportPlugin, VantResolve } from "vite-plugin-style-import";
- import viteCompression from "vite-plugin-compression";
- // import { ElementPlusResolver } from "unplugin-vue-components/resolvers";
- //import Components from "unplugin-vue-components/vite";
- //import svgLoader from "vite-svg-loader";
- import path from "path";
- // import AutoImport from "unplugin-auto-import/vite";
- //import jsx from "@vitejs/plugin-vue-jsx";
- import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
- import VueSetupExtend from "vite-plugin-vue-setup-extend";
- // https://vitejs.dev/config/
- export default defineConfig(({ mode }) => {
- // 获取环境配置文件
- const env = loadEnv(mode, process.cwd());
- const { VITE_APP_ENV } = env;
- return {
- base: VITE_APP_ENV === "production" ? "/" : "/",
- plugins: [
- vue(),
- createSvgIconsPlugin({
- // 指定需要缓存的图标文件夹
- iconDirs: [path.resolve(process.cwd(), "src/assets/icons/svg")],
- // 指定symbolId格式
- symbolId: "icon-[dir]-[name]",
- }),
- /* createStyleImportPlugin({
- resolves: [VantResolve()],
- }), */
- /* AutoImport({
- resolvers: [ElementPlusResolver()],
- }),
- Components({
- resolvers: [ElementPlusResolver()],
- }), */
- VueSetupExtend(),
- viteCompression({
- // 开启gzip模式
- verbose: true,
- disable: false,
- threshold: 10240 * 50,
- deleteOriginFile: false, // 压缩后是否删除源文件
- algorithm: "gzip",
- ext: ".gz",
- }),
- ],
- /* css: {
- preprocessorOptions: {
- scss: {
- additionalData: '@import "./src/assets/styles/ruoyi.scss";', // 全局公共样式
- },
- },
- }, */
- resolve: {
- alias: {
- // 设置 `@` 指向 `src` 目录
- "@": path.resolve(__dirname, "./src"),
- "@assets": path.resolve("src/assets"),
- "@comps": path.resolve("src/components"),
- "@utils": path.resolve("src/utils"),
- "@router": path.resolve("src/router"),
- "@store": path.resolve("src/store"),
- },
- //extensions: [".ts", ".js", ".vue", ".json", ".mjs"],
- extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"],
- },
- css: {
- postcss: {
- plugins: [
- {
- postcssPlugin: "internal:charset-removal",
- AtRule: {
- charset: (atRule) => {
- if (atRule.name === "charset") {
- atRule.remove();
- }
- },
- },
- },
- ],
- },
- },
- build: {
- // https://blog.csdn.net/lj1530562965/article/details/122231280
- // 混淆器设置
- 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: true,
- // 移除debugger
- drop_debugger: true,
- },
- // 保留类名
- keep_classnames: true,
- format: {
- // 移除所有的注释
- comments: false,
- },
- },
- // js、css等文件打包到不同文件夹
- // https://rollupjs.org/guide/en/#outputoptions-object
- /* rollupOptions: {
- output: {
- chunkFileNames: "assets/js/[name]-[hash].js",
- entryFileNames: "assets/js/[name]-[hash].js",
- assetFileNames: "assets/[ext]/[name]-[hash].[ext]"
- }
- } */
- },
- server: {
- host: "0.0.0.0", // 默认为localhost
- port: 80, // 端口号
- open: false, // 是否自动打开浏览器
- proxy: {
- // 本地开发环境通过代理实现跨域,生产环境使用 nginx 转发
- "/dev-api": {
- target: "http://223.80.101.20:8096", // 后端服务实际地址
- changeOrigin: true,
- //rewrite: (path) => path.replace(/^\/dev-api/, ""),
- rewrite: (path) =>
- path.replace(
- new RegExp("^" + env.VITE_APP_BASE_API),
- ""
- ),
- },
- },
- },
- };
- });
|