| 123456789101112131415161718192021222324252627282930313233 |
- /**
- * 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);
|