我的日常开发记录日志
首页
  • Laravel
  • Thinkphp
  • Swoole
  • Workman
  • php
  • HTML
  • CSS
  • JavaScript
  • Vue
  • ES6
  • 小程序
  • Mysql
  • Redis
  • Es
  • MongoDb
  • Git
  • Composer
  • Linux
  • Nginx
  • Docker
  • Vpn
  • 开发实战
  • 开发工具类
  • 友情链接
💖关于
💻收藏
  • 分类
  • 标签
  • 归档数据
GitHub (opens new window)

我的日常开发记录日志

never give up
首页
  • Laravel
  • Thinkphp
  • Swoole
  • Workman
  • php
  • HTML
  • CSS
  • JavaScript
  • Vue
  • ES6
  • 小程序
  • Mysql
  • Redis
  • Es
  • MongoDb
  • Git
  • Composer
  • Linux
  • Nginx
  • Docker
  • Vpn
  • 开发实战
  • 开发工具类
  • 友情链接
💖关于
💻收藏
  • 分类
  • 标签
  • 归档数据
GitHub (opens new window)
  • html

  • css

  • javascript

  • vue

    • Vue
    • vue3基本类型ref初始化
    • vue3中尖括号和冒号的使用细则
    • vue3中为什么使用const不使用let
    • vue3中watch和compute是
    • route-view的作用
    • 关于import使用问题
    • 顶层await的理解
    • js中的常见的异步操作
    • vue中use理解
    • vue中config使用
    • vue中的env环境使用
    • 在html中直接使用vue
    • vue3中setup
    • vue3中ref和reactive的区别
    • vue3中watch
    • vue3中vite-config
      • 在 Vue 3 中,使用 Vite.js 作为构建工具是一个流行的选择,因为它提供了快速的开发体验和高效的构建性能。
        • Vite 配置文件基本结构
        • 常见配置项及作用
        • 常见插件配置
        • 总结
        • 完整配置
    • vue3中组件的props类型
    • vite创建项目
    • vite使用tailwindcss
  • 小程序

  • Es6

  • 前端
  • vue
窝窝侠
2024-11-14

vue3中vite-config

# 在 Vue 3 中,使用 Vite.js 作为构建工具是一个流行的选择,因为它提供了快速的开发体验和高效的构建性能。

# Vite 配置文件基本结构

Vite 配置文件通常位于项目根目录下,名为 vite.config.js 或 vite.config.ts(TypeScript 版本)。该文件导出一个配置对象,可以通过它来控制 Vite 的行为。

import { defineConfig } from 'vite';

export default defineConfig({
  // 配置项
});
1
2
3
4
5

defineConfig 是 Vite 提供的一个帮助函数,确保类型推导和代码提示更加友好。

# 常见配置项及作用

  1. root

    • 作用:指定项目的根目录。默认值是当前工作目录。
    • 案例:
      export default defineConfig({
        root: 'src',  // 将项目根目录设置为 src 文件夹
      });
      
      1
      2
      3
  2. base

    • 作用:指定部署时的公共基础路径。它会影响生成的文件路径、资源加载路径等。通常在项目部署到非根路径时使用。
    • 案例:
      export default defineConfig({
        base: '/my-app/', // 设置应用部署路径
      });
      
      1
      2
      3
  3. mode

    • 作用:指定构建模式,mode 可以是 development(开发模式)、production(生产模式)等,Vite 会根据不同模式加载不同的配置和环境变量。
    • 案例:
      export default defineConfig({
        mode: 'production', // 设置为生产模式
      });
      
      1
      2
      3
  4. plugins

    • 作用:用于扩展 Vite 功能,通过插件系统集成第三方库或自定义插件。
    • 案例:
      import vue from '@vitejs/plugin-vue';  // 使用 Vue 插件
      
      export default defineConfig({
        plugins: [vue()], // 启用 Vue 插件
      });
      
      1
      2
      3
      4
      5
  5. server

    • 作用:配置开发服务器的选项。

      • port:设置开发服务器的端口。
      • open:启动时自动打开浏览器。
      • proxy:设置代理,用于开发环境中的接口请求转发。
      • https:是否启用 HTTPS。
    • 案例:

      export default defineConfig({
        server: {
          port: 3000,   // 设置端口号为 3000
          open: true,   // 自动打开浏览器
          proxy: {
            '/api': {
              target: 'http://localhost:5000', // 设置代理
              changeOrigin: true,              // 更改源地址
              rewrite: (path) => path.replace(/^\/api/, ''), // 重写路径
            }
          }
        }
      });
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
  6. build

    • 作用:构建相关配置,控制 Vite 在生产环境中的打包行为。

      • outDir:指定构建输出目录。
      • assetsDir:指定生成的静态资源存放目录。
      • minify:是否启用代码压缩。
      • sourcemap:是否生成源代码映射。
    • 案例:

      export default defineConfig({
        build: {
          outDir: 'dist',       // 输出文件夹为 dist
          assetsDir: 'assets',  // 静态资源放在 assets 文件夹
          minify: true,         // 启用代码压缩
          sourcemap: false,     // 不生成 source map
        }
      });
      
      1
      2
      3
      4
      5
      6
      7
      8
  7. resolve

    • 作用:配置模块解析相关选项。

      • alias:设置路径别名,简化导入路径。
      • extensions:设置模块解析的扩展名。
    • 案例:

      export default defineConfig({
        resolve: {
          alias: {
            '@components': '/src/components', // 设置路径别名
          },
          extensions: ['.js', '.vue', '.ts'], // 默认支持的扩展名
        }
      });
      
      1
      2
      3
      4
      5
      6
      7
      8
  8. css

    • 作用:配置 CSS 相关选项。

      • modules:是否启用 CSS Modules。
      • preprocessorOptions:配置 CSS 预处理器的选项,如 scss 或 sass。
    • 案例:

      export default defineConfig({
        css: {
          modules: {
            scopeBehaviour: 'local', // 启用 CSS 模块并设置作用域
          },
          preprocessorOptions: {
            scss: {
              additionalData: `@import "./src/styles/global.scss";` // 全局引入 SCSS 文件
            }
          }
        }
      });
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
  9. define

    • 作用:定义全局常量,这些常量在代码编译时会被替换。
    • 案例:
      export default defineConfig({
        define: {
          'process.env.NODE_ENV': '"production"',  // 定义环境变量
        }
      });
      
      1
      2
      3
      4
      5
  10. optimizeDeps

    • 作用:用于优化开发环境中的依赖。Vite 会在启动时对依赖进行预构建。
    • 案例:
      export default defineConfig({
        optimizeDeps: {
          include: ['lodash'],  // 手动指定需要优化的依赖
          exclude: ['some-package'], // 手动排除某些依赖
        }
      });
      
      1
      2
      3
      4
      5
      6
  11. envPrefix

    • 作用:配置环境变量的前缀。默认是 VITE_,只有以该前缀命名的环境变量才会被暴露到前端代码中。
    • 案例:
      export default defineConfig({
        envPrefix: 'VITE_', // 只会暴露以 VITE_ 为前缀的环境变量
      });
      
      1
      2
      3
  12. esbuild

    • 作用:配置 Vite 使用的构建工具 esbuild 的选项。可以加速开发和构建过程。
    • 案例:
      export default defineConfig({
        esbuild: {
          jsxFactory: 'h',    // 自定义 JSX 工厂函数
          jsxFragment: 'Fragment', // 自定义 JSX Fragment
        }
      });
      
      1
      2
      3
      4
      5
      6
  13. json

    • 作用:配置 JSON 文件的处理方式,允许在构建时直接引入 .json 文件。
    • 案例:
      export default defineConfig({
        json: {
          stringify: true, // 启用 JSON 文件的字符串化功能
        }
      });
      
      1
      2
      3
      4
      5

# 常见插件配置

  • Vue 插件:如果你在 Vue 项目中使用 Vite,需要安装并配置 @vitejs/plugin-vue 插件。

    import vue from '@vitejs/plugin-vue';
    
    export default defineConfig({
      plugins: [vue()]
    });
    
    1
    2
    3
    4
    5
  • Vite 插件:Vite 插件用于增强或修改构建过程,Vite 的插件非常丰富,可以添加如 PWA、TypeScript、Markdown 等插件。

    示例:配置 vite-plugin-pwa 插件来支持 PWA。

    import VitePWA from 'vite-plugin-pwa';
    
    export default defineConfig({
      plugins: [VitePWA({
        registerType: 'autoUpdate',
        workbox: {
          runtimeCaching: [
            {
              urlPattern: /^https:\/\/fonts\.(googleapis|gstatic)\.com\//,
              handler: 'CacheFirst',
              options: {
                cacheName: 'google-fonts',
                expiration: {
                  maxAgeSeconds: 60 * 60 * 24 * 30,  // 缓存 30 天
                },
              },
            },
          ],
        }
      })],
    });
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

# 总结

Vite 配置文件非常灵活,可以通过配置各种选项来满足项目的需求。主要的配置项包括:

  • root:项目根目录
  • base:公共基础路径
  • plugins:插件配置
  • server:开发服务器配置
  • build:生产构建配置
  • resolve:模块解析配置
  • css:CSS 相关配置
  • define:定义环境变量和全局常量
  • optimizeDeps:优化依赖
  • esbuild:配置 esbuild 性能优化
  • envPrefix:环境变量前缀

# 完整配置

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';  // Vue 插件

export default defineConfig({
  // 项目根目录,默认为当前工作目录
  // root: '',  // 如果项目的根目录在 src 文件夹下,可以通过该配置指定

  // 部署时的公共基础路径
  base: '/',  // 如果应用不是部署在根路径下,设置为对应的路径

  // 配置构建模式:development / production
  mode: 'production', // 设置构建模式为生产环境

  // 插件配置,扩展功能
  plugins: [
    vue(), // Vue 插件
  ],

  // 开发服务器配置
  server: {
    port: 8034,   // 设置开发服务器端口为 3000
    open: true,   // 启动时自动打开浏览器
    proxy: {
      '/api': {
        target: 'http://localhost:5000', // 设置接口代理
        changeOrigin: true,              // 更改源地址
        rewrite: (path) => path.replace(/^\/api/, ''), // 重写路径
      }
    },
    https: false,  // 启用 HTTPS
  },

  // 构建相关配置
  build: {
    outDir: 'dist',       // 输出文件夹为 dist
    assetsDir: 'assets',  // 静态资源存放目录为 assets
    minify: true,         // 启用代码压缩
    sourcemap: false,     // 不生成 source map
    chunkSizeWarningLimit: 500, // 设置最大 chunk 大小警告阈值(KB)
  },

  // 模块解析配置
  resolve: {
    alias: {
      '@components': '/src/components', // 配置路径别名.
      '@': '/src', // 将 '@' 设置为指向 '/src' 目录
    },
    extensions: ['.js', '.vue', '.ts'], // 默认支持的扩展名
  },

  // CSS 相关配置
  css: {
    modules: {
      scopeBehaviour: 'local',  // 启用 CSS 模块
    },
    preprocessorOptions: {
      scss: {
        additionalData: `@import "./src/styles/global.scss";` // 全局引入 SCSS 文件
      }
    },
  },

  // 定义全局常量
  define: {
    'process.env.NODE_ENV': '"production"', // 生产环境下定义的常量
  },


  // 环境变量前缀配置
  envPrefix: 'VITE_', // 只暴露以 VITE_ 为前缀的环境变量

  // esbuild 配置,影响构建性能
  esbuild: {
    jsxFactory: 'h',    // 自定义 JSX 工厂函数
    jsxFragment: 'Fragment', // 自定义 JSX Fragment
  },

  // JSON 处理配置
  json: {
    stringify: true, // 启用 JSON 文件的字符串化功能
  },

  // // 全局后置守卫示例
  // afterEach: (to, from) => {
  //   console.log(`Navigated from ${from.path} to ${to.path}`); // 记录路由跳转日志
  // },

});

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
在线编辑 (opens new window)
上次更新: 2025/02/25, 18:30:54
vue3中watch
vue3中组件的props类型

← vue3中watch vue3中组件的props类型→

最近更新
01
showprocess用法
04-29
02
vue3中尖括号和冒号的使用细则
04-29
03
sd使用
02-22
更多文章>
🖥️

© 2025窝窝侠 💌 豫ICP备20005263号-2 🛀 Theme by 💝 Vdoing && 小胖墩er

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×