import { mkdir, rm, readFile, writeFile, copyFile } from 'node:fs/promises'; import { resolve, join } from 'node:path'; const target = resolve(process.argv[2] || 'cocos/export/02-connect-1234'); // 默认目录是可再生构建产物,清掉 v1 遗留;自定义导出目录不删除用户文件。 if (!process.argv[2]) await rm(target, {recursive:true, force:true}); for (const dir of ['src', 'levels', 'adapters']) await mkdir(join(target, dir), { recursive: true }); const active = ['flow.ts', 'flow-rules.ts', 'cascade.ts', 'supply.ts', 'flow-animation.ts', 'record.ts', 'input.ts', 'rules.ts', 'types.ts', 'config.ts', 'physics.ts', 'random.ts', 'view.ts', 'storage.ts']; for (const name of active) { if (!name.endsWith('.ts')) continue; let source = await readFile(join('src', name), 'utf8'); // Creator 不必依赖 bundler 的 JSON module 支持,导出时生成等价 TypeScript 数据模块。 source = source.replace("'../levels/spawn.json'", "'../levels/spawn-data'").replace("'../levels/campaign.json'", "'../levels/campaign-data'"); await writeFile(join(target, 'src', name), source); } for (const name of ['spawn']) { const json = await readFile(`levels/${name}.json`, 'utf8'); await writeFile(join(target, 'levels', `${name}-data.ts`), `// 由 export-cocos.mjs 生成;在原始 levels/${name}.json 编辑。\nexport default ${json.trim()};\n`); } await copyFile('cocos/Connect1234Board.ts', join(target, 'adapters/Connect1234Board.ts')); console.log(`Cocos 迁移包已导出:${target}`);