feat(tools): paths.mjs 路径解析与工程发现
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
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 });
|
||||
}
|
||||
Reference in New Issue
Block a user