You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.2 KiB
37 lines
1.2 KiB
/**
|
|
* 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');
|
|
}
|