From 8cbc488e0c65c3bb195422418ba9ed48354b0f38 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Sun, 28 Jun 2026 18:10:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(framework):=20config=20=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E8=A7=A3=E6=9E=90=20resolveRuntimeMode(?= =?UTF-8?q?=E8=87=AA=E5=8A=A8+=E6=89=8B=E5=8A=A8=E8=A6=86=E7=9B=96)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- .../assets/framework/config/runtime-mode.ts | 20 +++++++++++++++++++ .../config/runtime-mode.test.ts | 16 +++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/config/runtime-mode.ts create mode 100644 cocoscreator_projects/framework-tests/config/runtime-mode.test.ts diff --git a/cocoscreator_projects/YouleNexus/assets/framework/config/runtime-mode.ts b/cocoscreator_projects/YouleNexus/assets/framework/config/runtime-mode.ts new file mode 100644 index 0000000..41328f9 --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/config/runtime-mode.ts @@ -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'; +} diff --git a/cocoscreator_projects/framework-tests/config/runtime-mode.test.ts b/cocoscreator_projects/framework-tests/config/runtime-mode.test.ts new file mode 100644 index 0000000..b3138cf --- /dev/null +++ b/cocoscreator_projects/framework-tests/config/runtime-mode.test.ts @@ -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'); +});