feat(framework): config 运行模式解析 resolveRuntimeMode(自动+手动覆盖)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-28 18:10:42 +08:00
co-authored by Claude Opus 4.8
parent ca3babeeb2
commit 8cbc488e0c
2 changed files with 36 additions and 0 deletions
@@ -0,0 +1,20 @@
export type RuntimeMode = 'debug' | 'release';
/**
* 手动覆盖运行模式。
* null = 自动跟随构建类型(推荐,发布前保持 null)。
* 'debug' / 'release' = 强制该模式(release 包里临时调试,或编辑器预览里验证正式行为)。
*/
export const MODE_OVERRIDE: RuntimeMode | null = null;
/**
* 解析运行模式:override 优先,否则由是否 debug 构建决定。
* isDebugBuild 由调用方读 Cocos 全局 DEBUG 传入(typeof DEBUG !== 'undefined' ? DEBUG : true)。
*/
export function resolveRuntimeMode(
isDebugBuild: boolean,
override: RuntimeMode | null = MODE_OVERRIDE,
): RuntimeMode {
if (override) return override;
return isDebugBuild ? 'debug' : 'release';
}
@@ -0,0 +1,16 @@
import { test } from 'node:test';
import assert from 'node:assert/strict';
import { resolveRuntimeMode } from '../../YouleNexus/assets/framework/config/runtime-mode.ts';
test('override 优先于构建类型', () => {
assert.equal(resolveRuntimeMode(true, 'release'), 'release');
assert.equal(resolveRuntimeMode(false, 'debug'), 'debug');
});
test('无 override:debug 构建 → debug', () => {
assert.equal(resolveRuntimeMode(true, null), 'debug');
});
test('无 override:release 构建 → release', () => {
assert.equal(resolveRuntimeMode(false, null), 'release');
});