/** * Vite 主配置文件 * 配置已模块化,详见 config/vite 目录 */ import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; import { defineConfig } from 'vite'; import { getViteConfig } from './config/vite/index.js'; // 仅修复 Windows 下 esbuild 构建失败;其它平台保持原有行为: // 1. 强制 esbuild 使用 node_modules 中已安装的二进制(跳过解压到临时目录) // 2. 把 TEMP/TMP 重定向到项目内的 .tmp 目录,避免 Windows Defender 锁定 // 参见:https://github.com/evanw/esbuild/issues/3645 if (process.platform === 'win32') { const cwd = process.cwd(); // 方案 1:设置 ESBUILD_BINARY_PATH const binCandidate = path.join(cwd, 'node_modules', '@esbuild', 'win32-x64', 'esbuild.exe'); if (fs.existsSync(binCandidate)) { process.env.ESBUILD_BINARY_PATH = binCandidate; } // 方案 2:重定向临时目录到项目内(绕开系统 TEMP 的 Defender 扫描) const localTmp = path.join(cwd, '.tmp', 'esbuild'); fs.mkdirSync(localTmp, { recursive: true }); process.env.TEMP = localTmp; process.env.TMP = localTmp; // 让 os.tmpdir() 也返回新值 os.tmpdir = () => localTmp; } export default defineConfig(getViteConfig);