/** * Vite build 后自动将产物复制到 Spring Boot 静态资源目录。 * 由 npm postbuild 钩子触发。 */ import { cpSync, existsSync, mkdirSync, readdirSync, rmSync } from 'node:fs'; import { join } from 'node:path'; const DIST = 'dist'; const TARGET = '../src/main/resources/static'; // 1. 清理上一次 Vite 构建的产物(保留 sdk/ 目录) if (existsSync(TARGET)) { for (const entry of readdirSync(TARGET)) { if (entry !== 'sdk') { rmSync(join(TARGET, entry), { recursive: true, force: true }); } } } // 2. 复制新构建产物 if (existsSync(DIST)) { cpSync(DIST, TARGET, { recursive: true }); console.log('✓ 已复制到', TARGET); } else { console.error('✗ dist 目录不存在,请先执行 vite build'); process.exit(1); } // 3. 将 sdk-test 多页产物移动到 sdk/test.html(资源引用为绝对路径 /assets/...,移动后仍可解析) const sdkTestHtml = join(TARGET, 'sdk-test.html'); if (existsSync(sdkTestHtml)) { const sdkDir = join(TARGET, 'sdk'); if (!existsSync(sdkDir)) mkdirSync(sdkDir, { recursive: true }); cpSync(sdkTestHtml, join(sdkDir, 'test.html')); rmSync(sdkTestHtml); console.log('✓ 已移动 sdk-test.html → sdk/test.html'); }