UNPKG

slidev-addon-sm

Version:

slidev-addon slidev sm

147 lines (131 loc) 5.61 kB
// vite.config.ts import { defineConfig, PluginOption } from "vite"; import dotenv from "dotenv"; import path from "path"; import { tr } from "element-plus/es/locales.mjs"; // 3. 加载 .env 文件(优先级:环境专属 > 公共配置) console.log("load .env file : .env." + process.env.NODE_ENV); console.log("load .env, BaseUrl: " + process.env.URL_BASE); function isDebug(): boolean { if (process.env.NODE_ENV === "development") { return true; } return false; } interface EnvConfig { // 插件相关配置 pluginName: string; isDebug: boolean; isMinify: boolean; logLevel: string; // Vite 相关配置 port: number; publicPath: string; outDir: string; sourcemap: boolean; enableHmr: boolean; } const getEnvConfig = (): EnvConfig => { const currentEnv = process.env.NODE_ENV || "development"; dotenv.config({ path: path.resolve(__dirname, `.env.${currentEnv}`), override: true, }); dotenv.config({ path: path.resolve(__dirname, ".env"), override: false, }); dotenv.config({ path: path.resolve( process.env.PNPM_SCRIPT_SRC_DIR as string, `.env.${currentEnv}` ), override: true, }); dotenv.config({ path: path.resolve(process.env.PNPM_SCRIPT_SRC_DIR as string, ".env"), override: true, }); console.log(process.env); console.log("load .env file : .env." + currentEnv); console.log("load dir : " + __dirname); console.log("load .env, BaseUrl: " + process.env.URL_BASE); return { // 插件相关 pluginName: process.env.PLUGIN_NAME as string, isDebug: isDebug(), isMinify: (process.env.PLUGIN_MINIFY as string) === "true", logLevel: process.env.LOG_LEVEL as string, // Vite 相关 port: Number(process.env.VITE_PORT as string), publicPath: process.env.VITE_PUBLIC_PATH as string, outDir: (process.env.VITE_OUT_DIR as string) || "dist", sourcemap: (process.env.VITE_SOURCEMAP as string) === "true", enableHmr: (process.env.VITE_HMR as string) === "true", }; }; const envConfig = getEnvConfig(); // 5. 开发环境调试插件(TypeScript 类型明确) const devDebugPlugin = (): PluginOption => { return { name: "slidev-plugin-dev-log", buildStart() { console.log( `[${envConfig.pluginName}] 开发模式启动(日志级别:${envConfig.logLevel})` ); console.log( `[调试信息] 端口:${envConfig.port},热更新:${envConfig.enableHmr}` ); }, }; }; export default defineConfig({ base: envConfig.publicPath, plugins: [envConfig.isDebug ? devDebugPlugin() : null], // 开发服务器配置 server: { host: "0.0.0.0", port: envConfig.port, //无效? open: envConfig.isDebug, // 开发环境自动打开浏览器 proxy: { "/login": { //"/login": { target: process.env.URL_BASE, // 替换为你的后端接口基础地址(必填) secure: !envConfig.isDebug, // 关键:禁用 SSL 证书验证(开发环境专用) // target: "http://172.28.21.103", // secure: false, changeOrigin: true, // 开启跨域模拟(关键:伪装代理请求的Origin为后端域名) //rewrite: (path) => path.replace("/login", "/login"), // 可选:去除请求路径中的 /api 前缀(根据后端接口是否带 /api 调整) // 示例:若后端接口是 http://localhost:8080/user/login,前端请求 /api/user/login → 代理后变为 http://localhost:8080/user/login // 若后端接口是 http://localhost:8080/api/user/login,可删除 rewrite 配置 }, // "/*/login": { // //"/login": { // target: process.env.URL_BASE, // 替换为你的后端接口基础地址(必填) // secure: !envConfig.isDebug, // 关键:禁用 SSL 证书验证(开发环境专用) // // target: "http://172.28.21.103", // // secure: false, // changeOrigin: true, // 开启跨域模拟(关键:伪装代理请求的Origin为后端域名) // rewrite: (path) => path.replace(/\/*\/login/, "/login"), // 可选:去除请求路径中的 /api 前缀(根据后端接口是否带 /api 调整) // // 示例:若后端接口是 http://localhost:8080/user/login,前端请求 /api/user/login → 代理后变为 http://localhost:8080/user/login // // 若后端接口是 http://localhost:8080/api/user/login,可删除 rewrite 配置 // }, // "^(.*/)?login$": { // //"/login": { // target: process.env.URL_BASE, // 替换为你的后端接口基础地址(必填) // secure: !envConfig.isDebug, // 关键:禁用 SSL 证书验证(开发环境专用) // // target: "http://172.28.21.103", // // secure: false, // changeOrigin: true, // 开启跨域模拟(关键:伪装代理请求的Origin为后端域名) // rewrite: (path) => path.replace(/^(.*\/)?login$/, "/login"), // 可选:去除请求路径中的 /api 前缀(根据后端接口是否带 /api 调整) // // 示例:若后端接口是 http://localhost:8080/user/login,前端请求 /api/user/login → 代理后变为 http://localhost:8080/user/login // // 若后端接口是 http://localhost:8080/api/user/login,可删除 rewrite 配置 // }, }, }, // 生产环境打包配置(可选) // build: { // outDir: "dist", // assetsDir: "assets", // }, });