import path from 'node:path' import { fileURLToPath } from 'node:url' import { defineConfig } from 'vite' import Uni from '@dcloudio/vite-plugin-uni' import UniHelperManifest from '@uni-helper/vite-plugin-uni-manifest' import UniHelperPages from '@uni-helper/vite-plugin-uni-pages' import UniHelperLayouts from '@uni-helper/vite-plugin-uni-layouts' import UniHelperComponents from '@uni-helper/vite-plugin-uni-components' import AutoImport from 'unplugin-auto-import/vite' import { WotResolver } from '@uni-helper/vite-plugin-uni-components/resolvers' import { readRuntimeConfig } from './src/config/runtimeConfig.node' /** 与 vite.config 同目录为项目根 */ const projectRoot = path.dirname(fileURLToPath(import.meta.url)) /** * 运行时配置:src/config/runtime.{development|production}.json * (小程序侧由 runtimeEnv.js 相对路径 import,不走 vite alias) */ export default async ({ mode }) => { const cfgMode = mode === 'production' ? 'production' : 'development' const rc = readRuntimeConfig(projectRoot, cfgMode) const UnoCSS = (await import('unocss/vite')).default return defineConfig({ root: projectRoot, plugins: [ UniHelperManifest(), UniHelperPages({ dts: 'src/uni-pages.d.ts', }), UniHelperLayouts(), UniHelperComponents({ dts: 'src/components.d.ts', directoryAsNamespace: true, resolvers: [WotResolver()], }), Uni(), AutoImport({ imports: ['vue', '@vueuse/core', 'uni-app'], dts: 'src/auto-imports.d.ts', dirs: ['src/composables', 'src/stores', 'src/utils'], vueTemplate: true, }), UnoCSS(), ], server: { proxy: { [rc.apiPrefix]: { target: rc.apiUrl, changeOrigin: true, }, }, }, }) }