fix(build): copy runtime db generated assets

This commit is contained in:
ciat-777
2026-03-15 01:21:17 +08:00
parent e385d87502
commit 7180cbf913
3 changed files with 62 additions and 1 deletions
@@ -0,0 +1,38 @@
import { mkdtempSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
import { join } from 'node:path';
import { tmpdir } from 'node:os';
import { afterEach, describe, expect, it } from 'vitest';
import { copyRuntimeDbGeneratedAssets } from './copy-runtime-db-generated.js';
const tempDirs: string[] = [];
afterEach(() => {
while (tempDirs.length > 0) {
const dir = tempDirs.pop();
if (dir) {
rmSync(dir, { recursive: true, force: true });
}
}
});
describe('copyRuntimeDbGeneratedAssets', () => {
it('copies generated runtime db artifacts into dist', () => {
const repoRoot = mkdtempSync(join(tmpdir(), 'metapi-runtime-db-assets-'));
tempDirs.push(repoRoot);
const sourceDir = join(repoRoot, 'src', 'server', 'db', 'generated');
const nestedDir = join(sourceDir, 'fixtures');
mkdirSync(nestedDir, { recursive: true });
writeFileSync(join(sourceDir, 'mysql.bootstrap.sql'), 'create table demo ();');
writeFileSync(join(nestedDir, 'baseline.json'), '{"ok":true}');
copyRuntimeDbGeneratedAssets(repoRoot);
expect(
readFileSync(join(repoRoot, 'dist', 'server', 'db', 'generated', 'mysql.bootstrap.sql'), 'utf8'),
).toBe('create table demo ();');
expect(
readFileSync(join(repoRoot, 'dist', 'server', 'db', 'generated', 'fixtures', 'baseline.json'), 'utf8'),
).toBe('{"ok":true}');
});
});
+23
View File
@@ -0,0 +1,23 @@
import { cpSync, existsSync, mkdirSync } from 'node:fs';
import { dirname, resolve } from 'node:path';
import { fileURLToPath } from 'node:url';
function resolveRepoRoot(): string {
return resolve(dirname(fileURLToPath(import.meta.url)), '../..');
}
export function copyRuntimeDbGeneratedAssets(repoRoot: string = resolveRepoRoot()): void {
const sourceDir = resolve(repoRoot, 'src/server/db/generated');
const targetDir = resolve(repoRoot, 'dist/server/db/generated');
if (!existsSync(sourceDir)) {
throw new Error(`Runtime DB generated assets directory does not exist: ${sourceDir}`);
}
mkdirSync(dirname(targetDir), { recursive: true });
cpSync(sourceDir, targetDir, { recursive: true, force: true });
}
if (process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
copyRuntimeDbGeneratedAssets();
}