Bläddra i källkod

非windows平台构建前端时保持以前的配置。

xiaoguohua 4 timmar sedan
förälder
incheckning
c3c8212ec6
1 ändrade filer med 16 tillägg och 14 borttagningar
  1. 16 14
      forecast-backend-vue/vite.config.js

+ 16 - 14
forecast-backend-vue/vite.config.js

@@ -8,24 +8,26 @@ import path from 'node:path';
 import { defineConfig } from 'vite';
 import { getViteConfig } from './config/vite/index.js';
 
-// 修复 Windows 下 esbuild 构建失败:
+// 仅修复 Windows 下 esbuild 构建失败;其它平台保持原有行为:
 // 1. 强制 esbuild 使用 node_modules 中已安装的二进制(跳过解压到临时目录)
 // 2. 把 TEMP/TMP 重定向到项目内的 .tmp 目录,避免 Windows Defender 锁定
 //    参见:https://github.com/evanw/esbuild/issues/3645
-const cwd = process.cwd();
+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;
-}
+  // 方案 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;
+  // 方案 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);