vite.config.js 1.2 KB

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