fix(skin): 修复最终评审发现的 6 处缺陷(junction 排除失效/meta 静默丢失等)
跨任务视角发现的问题:Critical1 materialize.mjs 的 junction 排除比较在 Windows 上因长路径前缀恒假、从未生效,且测试夹具的 junction 指向真源自身, 掩盖了此问题;Critical2 composeSkin 例外通道在 uuid 缺失/框架侧无 meta 时 静默失败,违反第二准则;Important3 可覆盖范围误把 theme/ 下的框架 TS 代码 也纳入;Important5 cli-entry 测试漏注册 check-skin/build-game;Important6 composeSkin 与 check-skin 各自拼路径,未共用 paths.mjs 权威推导;Important7 --platform 缺值时静默落到默认平台。逐条修复并补测试,Critical1 用诱饵框架 目录验证过能真正杀掉该 bug(变异推演见 fix report)。 spec §5 step5 的 dist/<name>/ 拷贝按要求标注为本期未实现,不实现。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -80,7 +80,17 @@ if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href)
|
||||
process.exit(1);
|
||||
}
|
||||
const pIdx = process.argv.indexOf('--platform');
|
||||
const targetPlatform = pIdx > -1 ? process.argv[pIdx + 1] : undefined;
|
||||
let targetPlatform;
|
||||
if (pIdx > -1) {
|
||||
const val = process.argv[pIdx + 1];
|
||||
// 用户明确写了 --platform 却没给值(或紧跟下一个 flag):显式报错,
|
||||
// 不能落到 buildGame 的 `?? 'android'` 默认值——那会把"用户指定"悄悄变成"猜的"(第二准则)。
|
||||
if (!val || val.startsWith('--')) {
|
||||
console.error('用法: npm run build-game <game> [-- --platform <platform>](--platform 后必须跟平台名,如 android)');
|
||||
process.exit(1);
|
||||
}
|
||||
targetPlatform = val;
|
||||
}
|
||||
try {
|
||||
const r = buildGame(name, targetPlatform ? { platform: targetPlatform } : {});
|
||||
console.log(`皮肤命中 ${r.skin.matched} 处,框架可覆盖资源共 ${r.skin.frameworkTotal} 个`);
|
||||
|
||||
Reference in New Issue
Block a user