Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
48 lines
1.7 KiB
JavaScript
48 lines
1.7 KiB
JavaScript
import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from 'node:fs';
|
||
import { tmpdir } from 'node:os';
|
||
import { join } from 'node:path';
|
||
|
||
// 构造一个临时 monorepo:YouleNexus(host) + framework 真源 + 空 games/
|
||
export function makeTempMonorepo() {
|
||
const root = mkdtempSync(join(tmpdir(), 'youle-mono-'));
|
||
const host = join(root, 'YouleNexus');
|
||
const framework = join(host, 'assets', 'framework');
|
||
mkdirSync(framework, { recursive: true });
|
||
writeFileSync(
|
||
join(host, 'package.json'),
|
||
JSON.stringify({ name: 'YouleNexus', uuid: 'host-uuid', creator: { version: '3.8.8' } }, null, 2)
|
||
);
|
||
writeFileSync(join(framework, 'README.md'), '# framework src\n');
|
||
const games = join(root, 'games');
|
||
mkdirSync(games, { recursive: true });
|
||
return { root, host, framework, games };
|
||
}
|
||
|
||
// 在 gamesDir 下造一个子游戏工程(含 package.json)
|
||
export function makeGameProject(gamesDir, name, version = '3.8.8') {
|
||
const dir = join(gamesDir, name);
|
||
mkdirSync(join(dir, 'assets'), { recursive: true });
|
||
writeFileSync(
|
||
join(dir, 'package.json'),
|
||
JSON.stringify({ name, uuid: `${name}-uuid`, creator: { version } }, null, 2)
|
||
);
|
||
return dir;
|
||
}
|
||
|
||
// 造一个最小种子工程
|
||
export function makeSeed(root) {
|
||
const seed = join(root, 'templates', 'game-seed');
|
||
mkdirSync(join(seed, 'assets'), { recursive: true });
|
||
mkdirSync(join(seed, 'settings'), { recursive: true });
|
||
writeFileSync(
|
||
join(seed, 'package.json'),
|
||
JSON.stringify({ name: 'game-seed', uuid: 'seed-uuid', creator: { version: '3.8.8' } }, null, 2)
|
||
);
|
||
writeFileSync(join(seed, 'settings', 'v2.json'), '{}\n');
|
||
return seed;
|
||
}
|
||
|
||
export function cleanup(root) {
|
||
rmSync(root, { recursive: true, force: true });
|
||
}
|