import { defineConfig } from 'vite'; // 从 Vite 导入 defineConfig 函数，用于定义 Vite 配置
import uni from '@dcloudio/vite-plugin-uni'; // 导入 Uni-App 的 Vite 插件，用于支持 Uni-App 项目
import path from 'path'; // 导入 Node.js 的 path 模块，用于处理文件路径
import AutoImport from 'unplugin-auto-import/vite'; // 导入 unplugin-auto-import 插件，用于自动导入常用模块
import h5ProdEffectPlugin from 'uni-vite-plugin-h5-prod-effect'; // 导入 H5 生产环境打包时的特殊处理插件

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    uni(), // 启用 Uni-App 的 Vite 插件，确保 Vite 能够正确处理 Uni-App 项目

    AutoImport({
      imports: [
        'vue', // 自动导入 Vue 的全局 API
        'uni-app' // 自动导入 Uni-App 的全局 API
      ],
      dirs: [
        'src/utils', // 指定自动导入的目录，这里是 `src/utils` 目录下的所有文件
        'src/wxs/**' // 指定自动导入的目录，这里是 `src/wxs` 目录及其子目录下的所有文件
      ],
      dts: 'src/auto-imports.d.ts', // 生成的类型声明文件路径，用于 TypeScript 支持
      eslintrc: {
        enabled: true // 启用 ESLint 配置文件的自动生成，确保 ESLint 知道哪些模块是自动导入的
      }
    }),

    // 对 H5 生产环境打包时的特殊处理，确保 `uni-crazy-router` 在生产环境中正常工作
    h5ProdEffectPlugin()
  ],

  server: {
    host: true, // 允许外部访问开发服务器，设置为 `true` 可以在局域网内访问
    port: 80, // 设置开发服务器的端口号为 80
    open: true // 启动开发服务器时自动打开浏览器
  },

  resolve: {
    alias: {
      '@': path.resolve(__dirname, 'src') // 设置别名 `@` 指向项目的 `src` 目录，方便路径引用
    }
  }
});
