Files
AgentLab/frontend/vite.config.ts
T
ThearchyHelios 04450e8f51 check-all 提速:从约 10 分钟降到约 3 分钟;可选隔离环境,边改代码边跑也不被打断
- 关浏览器不干等:系统 Chrome 建过浏览器上下文之后,关浏览器要空等约 4.5 秒才退出。
  check-all 给检查用的 Chrome 套一层转发,见到「关浏览器」就替它应答、再让它退出(几十毫秒),
  其余消息原样转发,检查脚本一行不改;CHECK_FAST_CLOSE=0 关掉。最慢的两项因此从 317 秒、281 秒降到 184 秒、117 秒
- 拆开最慢的两项:run-states 拆成 3 份、canvas-fx 拆成 2 份,分到不同的道;每一段恰好跑一次,断言数不变,
  以后新加的段自动落进「其余」那一份;汇总表按原检查名合成一行,没过的只重跑那一份
- 量时间的几份同一时刻最多跑一份(原来是整项互斥),这条链排在最前面;默认 4 道改成 8 道
- 新增 --stacks N(要 CHECK_DATA_SRC 指定数据目录):从当前工作区另起 N 套后端和前端,
  各用一份数据拷贝,端口自动挑空闲的;后端不热重载、前端不监听文件,代码中途被改也不会打断检查;
  跑完、出错或被中断都会把进程和临时目录清干净
- 前端开发服务器新增两个可选开关(AGENTLAB_VITE_NO_WATCH、AGENTLAB_VITE_CACHE_DIR),不设时行为不变
- 写稳一处断言竞态:数据页点亮「数据」的判断,路由状态在地址变化之后才提交,改成最多等 3 秒再判,判定条件不变

实测(17 项、4361 条断言,一条没删、没放松):原来 9 分 58 秒;默认跑法 3 分 26 秒;
--stacks 2 --lanes 12 约 3 分 03 秒(另加约 10 秒起服务),连续 3 次全绿
2026-09-29 16:05:49 +08:00

33 lines
1.8 KiB
TypeScript

import { defineConfig, searchForWorkspaceRoot } from 'vite'
import react from '@vitejs/plugin-react'
import tailwindcss from '@tailwindcss/vite'
// 后端端口跟着 dev.sh 走:8000 被别的项目占了它会自动挪,挪到哪就从
// 环境变量告诉这边,否则前端会把请求代理到别人的服务上去。
const API_PORT = process.env.AGENTLAB_PORT || '8000'
// 下面两个只给检查用的隔离环境(scripts/check-all.mjs --stacks)设,平时不设、行为不变:
// - AGENTLAB_VITE_NO_WATCH=1:不监听文件、不开热更新。边改代码边跑检查时,热更新会把页面
// 整个重载、或者把 store 模块换掉,检查就偶发失败
// - AGENTLAB_VITE_CACHE_DIR:依赖预构建的缓存放到这里(每套一份)。关了热更新,React 插件就不挂
// Fast Refresh,预构建的指纹跟着变:要是和平时的开发服务器共用 node_modules/.vite,它会把那边
// 的缓存整个重建一遍。所以关热更新时缓存一定另放,没给目录就放 node_modules/.vite-no-watch
const NO_WATCH = process.env.AGENTLAB_VITE_NO_WATCH === '1'
const CACHE_DIR = process.env.AGENTLAB_VITE_CACHE_DIR || (NO_WATCH ? 'node_modules/.vite-no-watch' : '')
export default defineConfig({
plugins: [react(), tailwindcss()],
...(CACHE_DIR ? { cacheDir: CACHE_DIR } : {}),
server: {
// 5173 太容易和别的项目撞车,挪开一点
port: 5273,
...(NO_WATCH ? { watch: null, hmr: false } : {}),
// 缓存放到项目外面(/tmp 下)时要放行它:默认只放行项目目录
...(CACHE_DIR ? { fs: { allow: [searchForWorkspaceRoot(process.cwd()), CACHE_DIR] } } : {}),
proxy: {
// 前端开发服务器代理到后端,省掉跨域配置
'/api': { target: `http://127.0.0.1:${API_PORT}`, changeOrigin: true, ws: true },
},
},
})