@ttmg/cli 0.3.8-beta.3 → 0.3.9-beta.wasm.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -1
- package/dist/index.js +1928 -1205
- package/dist/index.js.map +1 -1
- package/dist/package.json +7 -2
- package/dist/public/assets/{Detail-DS6U5mRS.js → Detail-CqXvsvPM.js} +1 -1
- package/dist/public/assets/Detail-CqXvsvPM.js.br +0 -0
- package/dist/public/assets/{MonetizationMode-C8WTPdaL.js → MonetizationMode-2bp9UZWM.js} +1 -1
- package/dist/public/assets/{MonetizationModeSummary-BS7EmGz7.js → MonetizationModeSummary-DBtIQq9Z.js} +1 -1
- package/dist/public/assets/{baseForm-Dj23Zmdr.js → baseForm-BFkpAlns.js} +4 -4
- package/dist/public/assets/baseForm-BFkpAlns.js.br +0 -0
- package/dist/public/assets/{index-Co_mqsxn.js → index-B6ZeUJlM.js} +1 -1
- package/dist/public/assets/index-BFePHKNX.js +1 -0
- package/dist/public/assets/index-BFePHKNX.js.br +0 -0
- package/dist/public/assets/{index-BOpd1gIe.js → index-BJQfbNPd.js} +1 -1
- package/dist/public/assets/{index-DZTvsbCe.js → index-BPzYPKPA.js} +1 -1
- package/dist/public/assets/index-BRFS2ZhY.css +1 -0
- package/dist/public/assets/index-BRFS2ZhY.css.br +0 -0
- package/dist/public/assets/{index-oYIBlQRY.js → index-BUDAPXlB.js} +1 -1
- package/dist/public/assets/{index-C8Mc6d6E.js → index-BYgShzrj.js} +1 -1
- package/dist/public/assets/{index-CCoPaW9N.js → index-Ba1XAQLw.js} +1 -1
- package/dist/public/assets/{index-C6Obic7Y.js → index-BpefkOoB.js} +1 -1
- package/dist/public/assets/index-BvxhyFWU.js +14 -0
- package/dist/public/assets/index-BvxhyFWU.js.br +0 -0
- package/dist/public/assets/index-BwbPFgZF.css +1 -0
- package/dist/public/assets/{index-C6fJhGVf.js → index-CL2qDQto.js} +1 -1
- package/dist/public/assets/index-CMUKwrEm.js +1 -0
- package/dist/public/assets/{index-sGtn40-w.js → index-CRAXXzpR.js} +1 -1
- package/dist/public/assets/index-CRAXXzpR.js.br +0 -0
- package/dist/public/assets/{index-D2LsTDVa.css → index-CgAbOvxk.css} +1 -1
- package/dist/public/assets/index-CgAbOvxk.css.br +0 -0
- package/dist/public/assets/{index-C898tUMR.js → index-DY13Lo-E.js} +1 -1
- package/dist/public/assets/index-DY13Lo-E.js.br +0 -0
- package/dist/public/assets/index-DqFmR7Qk.css +1 -0
- package/dist/public/assets/{index-Ca4ZdkdC.js → index-FFfimhRp.js} +1 -1
- package/dist/public/assets/index-FFfimhRp.js.br +0 -0
- package/dist/public/assets/{index-D_Y0HD2X.js → index-OLBa9viz.js} +1 -1
- package/dist/public/assets/index-OsVhWD4K.js +1 -0
- package/dist/public/assets/{index-UZ08kMPF.js → index-f0PBkQd9.js} +1 -1
- package/dist/public/assets/{index-TXPH6UQv.js → index-lKrpiZfQ.js} +1 -1
- package/dist/public/assets/index-lKrpiZfQ.js.br +0 -0
- package/dist/public/assets/{times-_NUvbbyU.js → times-C1GmugF6.js} +1 -1
- package/dist/public/index.html +10 -3
- package/dist/scripts/dev-debug.js +191 -0
- package/package.json +7 -2
- package/dist/public/assets/Detail-DS6U5mRS.js.br +0 -0
- package/dist/public/assets/baseForm-Dj23Zmdr.js.br +0 -0
- package/dist/public/assets/index-BVIWa0s0.js +0 -14
- package/dist/public/assets/index-BVIWa0s0.js.br +0 -0
- package/dist/public/assets/index-BY1PUmxY.js +0 -1
- package/dist/public/assets/index-BY1PUmxY.js.br +0 -0
- package/dist/public/assets/index-C898tUMR.js.br +0 -0
- package/dist/public/assets/index-Ca4ZdkdC.js.br +0 -0
- package/dist/public/assets/index-D2LsTDVa.css.br +0 -0
- package/dist/public/assets/index-DPSts5Re.css +0 -1
- package/dist/public/assets/index-DPSts5Re.css.br +0 -0
- package/dist/public/assets/index-TXPH6UQv.js.br +0 -0
- package/dist/public/assets/index-sGtn40-w.js.br +0 -0
package/dist/public/index.html
CHANGED
|
@@ -12,10 +12,17 @@
|
|
|
12
12
|
rel="stylesheet"
|
|
13
13
|
/>
|
|
14
14
|
<title>TikTok Mini Games DevTool</title>
|
|
15
|
-
<script type="module" crossorigin src="/assets/index-
|
|
16
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
15
|
+
<script type="module" crossorigin src="/assets/index-BvxhyFWU.js"></script>
|
|
16
|
+
<link rel="stylesheet" crossorigin href="/assets/index-CgAbOvxk.css">
|
|
17
17
|
</head>
|
|
18
|
-
|
|
18
|
+
<!--
|
|
19
|
+
The IDE shell renders in Semi UI's default light theme. The only
|
|
20
|
+
surviving consumer of these attributes is the wasm code-split
|
|
21
|
+
(分包) UI, whose styles are scoped to `body[theme-mode='light']`
|
|
22
|
+
/ `body[theme-variant='simple']` for a minimal light look. They
|
|
23
|
+
are pinned statically here (no runtime theme switcher).
|
|
24
|
+
-->
|
|
25
|
+
<body theme-mode="light" theme-variant="simple">
|
|
19
26
|
<div id="root"></div>
|
|
20
27
|
<iframe
|
|
21
28
|
style="visibility: hidden"
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ===================================================================
|
|
3
|
+
* dev-debug.js — 一键联调 cli + ide
|
|
4
|
+
* ===================================================================
|
|
5
|
+
*
|
|
6
|
+
* 用途:让你在本地同时改 CLI(CLI server / wasm split / route 等)和 IDE
|
|
7
|
+
* (React 组件、wasm-split Modal、API 调用)时只敲一条命令就把三件事
|
|
8
|
+
* 一起拉起来:
|
|
9
|
+
*
|
|
10
|
+
* 1. CLI 源码增量构建 → packages/libs/dev-tools/cli/dist
|
|
11
|
+
* 2. CLI dev server → http://localhost:3000,cwd = 你的 Unity 工程
|
|
12
|
+
* 3. IDE vite dev server → http://localhost:5173,热更
|
|
13
|
+
*
|
|
14
|
+
* IDE 的 vite.config.ts 已经把所有 /game/* 接口 proxy 到 :3000,所以
|
|
15
|
+
* 你只要在浏览器开 http://localhost:5173,就能用最新 IDE + 最新 CLI 联调。
|
|
16
|
+
*
|
|
17
|
+
* 用法(在 cli 目录下):
|
|
18
|
+
* pnpm dev:debug /absolute/path/to/your/unity-game
|
|
19
|
+
* # 或者
|
|
20
|
+
* TTMG_DEV_PROJECT=/absolute/path/to/your/unity-game pnpm dev:debug
|
|
21
|
+
*
|
|
22
|
+
* 在 monorepo 任意位置:
|
|
23
|
+
* pnpm -C packages/libs/dev-tools/cli dev:debug /absolute/path/to/unity-game
|
|
24
|
+
*
|
|
25
|
+
* 必填:Unity 工程目录(必须含 game.json)。CLI 大量逻辑用 process.cwd()
|
|
26
|
+
* 解析 wasm 路径、写 __TTMG_TEMP__、改 webgl-wasm-split.js,所以必须把
|
|
27
|
+
* CLI 进程的 cwd 直接指到工程根,不能在 monorepo 里跑。
|
|
28
|
+
*
|
|
29
|
+
* 设计要点:
|
|
30
|
+
* - 用 Node 自带的 `--watch`(≥18.11)替代 nodemon —— 监听 dist/index.js
|
|
31
|
+
* 变化自动重启 server 进程,零额外依赖。
|
|
32
|
+
* - 用 rollup 自带 `-w` 替代 ts-node-dev / tsx —— 跟 npm run build 走
|
|
33
|
+
* 同一条 pipeline,不会出现 "ts-node 跑得通、build 不过" 的偏差。
|
|
34
|
+
* - 启动顺序:先 spawn rollup -w(它会自己 first-build),轮询等待
|
|
35
|
+
* dist/index.js 出现,再 spawn node --watch;vite 跟 rollup 同时起。
|
|
36
|
+
* 这样避免了"node --watch 在 dist 还不存在时直接退出"的坑。
|
|
37
|
+
* - SIGINT/SIGTERM 一并下发给三个子进程,Ctrl+C 干净收尾。
|
|
38
|
+
*
|
|
39
|
+
* 设置 `TTMG_DEV_NO_OPEN=1` 给 CLI 子进程,让它不要 openUrl 到 :3000
|
|
40
|
+
*(那是 dist/public 里的旧 IDE,联调时我们要的是 vite 的 :5173)。
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
const { spawn } = require('child_process');
|
|
44
|
+
const fs = require('fs');
|
|
45
|
+
const path = require('path');
|
|
46
|
+
|
|
47
|
+
// __dirname = packages/libs/dev-tools/cli/scripts
|
|
48
|
+
const CLI_DIR = path.resolve(__dirname, '..');
|
|
49
|
+
const IDE_DIR = path.resolve(__dirname, '../../ide');
|
|
50
|
+
const CLI_DIST_ENTRY = path.join(CLI_DIR, 'dist/index.js');
|
|
51
|
+
|
|
52
|
+
function fail(msg) {
|
|
53
|
+
console.error(`\n❌ ${msg}\n`);
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const projectArg = process.argv[2];
|
|
58
|
+
const projectEnv = process.env.TTMG_DEV_PROJECT;
|
|
59
|
+
const projectDir = projectArg
|
|
60
|
+
? path.resolve(projectArg)
|
|
61
|
+
: projectEnv
|
|
62
|
+
? path.resolve(projectEnv)
|
|
63
|
+
: null;
|
|
64
|
+
|
|
65
|
+
if (!projectDir) {
|
|
66
|
+
fail(
|
|
67
|
+
'缺少 Unity 工程目录。\n' +
|
|
68
|
+
' 用法: pnpm dev:debug /absolute/path/to/your/unity-game\n' +
|
|
69
|
+
' 或: TTMG_DEV_PROJECT=/absolute/path/to/unity-game pnpm dev:debug',
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
if (!fs.existsSync(projectDir)) {
|
|
73
|
+
fail(`Unity 工程目录不存在: ${projectDir}`);
|
|
74
|
+
}
|
|
75
|
+
if (!fs.existsSync(path.join(projectDir, 'game.json'))) {
|
|
76
|
+
fail(
|
|
77
|
+
`${projectDir} 看起来不是 Unity 工程根(缺少 game.json)。\n` +
|
|
78
|
+
` CLI 用 process.cwd() 操作工程文件,cwd 不对会写错地方,所以这里硬性校验。`,
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
if (!fs.existsSync(IDE_DIR)) {
|
|
82
|
+
fail(
|
|
83
|
+
`IDE 目录不存在: ${IDE_DIR}\n` +
|
|
84
|
+
` 这个脚本依赖 monorepo 同级 ide 包,单独发出去的 npm 包不会带这个目录。`,
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
console.log('🚀 ttmg dev-debug starting');
|
|
89
|
+
console.log(` ├─ CLI 源码 ${CLI_DIR}`);
|
|
90
|
+
console.log(` ├─ IDE 源码 ${IDE_DIR}`);
|
|
91
|
+
console.log(` └─ Unity 工程 ${projectDir}`);
|
|
92
|
+
console.log('');
|
|
93
|
+
|
|
94
|
+
const children = [];
|
|
95
|
+
|
|
96
|
+
function spawnChild(label, cmd, args, opts) {
|
|
97
|
+
console.log(`▶ [${label}] ${cmd} ${args.join(' ')}`);
|
|
98
|
+
const child = spawn(cmd, args, {
|
|
99
|
+
stdio: 'inherit',
|
|
100
|
+
shell: process.platform === 'win32', // Windows 下需要 shell 才能识别 .cmd
|
|
101
|
+
...opts,
|
|
102
|
+
});
|
|
103
|
+
child._label = label;
|
|
104
|
+
child.on('exit', (code, signal) => {
|
|
105
|
+
if (signal === 'SIGINT' || signal === 'SIGTERM') return;
|
|
106
|
+
console.log(`✗ [${label}] exited with code=${code} signal=${signal}`);
|
|
107
|
+
// 任何一个子进程异常退出都把整个 dev-debug 拉下来,避免出现
|
|
108
|
+
// "vite 还在转、CLI 已经挂了" 这种调起来很懵的状态。
|
|
109
|
+
cleanup(code ?? 1);
|
|
110
|
+
});
|
|
111
|
+
children.push(child);
|
|
112
|
+
return child;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
let cleanedUp = false;
|
|
116
|
+
function cleanup(code = 0) {
|
|
117
|
+
if (cleanedUp) return;
|
|
118
|
+
cleanedUp = true;
|
|
119
|
+
for (const c of children) {
|
|
120
|
+
if (!c.killed) {
|
|
121
|
+
try {
|
|
122
|
+
c.kill('SIGINT');
|
|
123
|
+
} catch {}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// 给子进程一点时间把端口让出来 / flush 日志
|
|
127
|
+
setTimeout(() => process.exit(code), 200);
|
|
128
|
+
}
|
|
129
|
+
process.on('SIGINT', () => cleanup(0));
|
|
130
|
+
process.on('SIGTERM', () => cleanup(0));
|
|
131
|
+
|
|
132
|
+
// 1) CLI rollup watch —— 第一次会 full build,之后增量。
|
|
133
|
+
spawnChild('cli:build', 'npx', ['rollup', '-c', '-w'], { cwd: CLI_DIR });
|
|
134
|
+
|
|
135
|
+
// 3) IDE vite —— 跟 rollup 没依赖关系,并行起。
|
|
136
|
+
spawnChild('ide:dev', 'pnpm', ['dev'], { cwd: IDE_DIR });
|
|
137
|
+
|
|
138
|
+
// 2) CLI dev server —— 必须等 rollup 第一次 build 完,否则 node --watch
|
|
139
|
+
// 会在 dist/index.js 还不存在时立即退出。轮询 dist/index.js 文件存在
|
|
140
|
+
// + 连续两次大小不变(=已经写完)后再启动。
|
|
141
|
+
const POLL_INTERVAL_MS = 200;
|
|
142
|
+
const READY_TIMEOUT_MS = 60_000;
|
|
143
|
+
const startedAt = Date.now();
|
|
144
|
+
let lastSize = -1;
|
|
145
|
+
let stableCount = 0;
|
|
146
|
+
|
|
147
|
+
const waitTimer = setInterval(() => {
|
|
148
|
+
if (cleanedUp) {
|
|
149
|
+
clearInterval(waitTimer);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (Date.now() - startedAt > READY_TIMEOUT_MS) {
|
|
153
|
+
clearInterval(waitTimer);
|
|
154
|
+
fail(
|
|
155
|
+
`等待 ${CLI_DIST_ENTRY} 超时 (${READY_TIMEOUT_MS}ms)。` +
|
|
156
|
+
' rollup -w 是不是挂了?看上面的 cli:build 输出。',
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
let size;
|
|
160
|
+
try {
|
|
161
|
+
size = fs.statSync(CLI_DIST_ENTRY).size;
|
|
162
|
+
} catch {
|
|
163
|
+
return; // 还没生成
|
|
164
|
+
}
|
|
165
|
+
if (size === lastSize && size > 0) {
|
|
166
|
+
stableCount += 1;
|
|
167
|
+
} else {
|
|
168
|
+
stableCount = 0;
|
|
169
|
+
lastSize = size;
|
|
170
|
+
}
|
|
171
|
+
if (stableCount >= 2) {
|
|
172
|
+
clearInterval(waitTimer);
|
|
173
|
+
console.log(
|
|
174
|
+
`\n✓ cli dist ready (${(size / 1024).toFixed(1)}KB), starting server in ${projectDir}\n`,
|
|
175
|
+
);
|
|
176
|
+
spawnChild(
|
|
177
|
+
'cli:server',
|
|
178
|
+
'node',
|
|
179
|
+
['--watch', CLI_DIST_ENTRY, 'dev'],
|
|
180
|
+
{
|
|
181
|
+
cwd: projectDir,
|
|
182
|
+
env: {
|
|
183
|
+
...process.env,
|
|
184
|
+
// 让 CLI 跳过自己的 chrome-launcher openUrl —— 联调时 IDE 在
|
|
185
|
+
// vite (5173),不要再去打开 dist/public 那份旧 IDE。
|
|
186
|
+
TTMG_DEV_NO_OPEN: '1',
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
}, POLL_INTERVAL_MS);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ttmg/cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.9-beta.wasm.1",
|
|
4
4
|
"description": "TikTok Mini Game Command Line Tool",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"bin": {
|
|
@@ -9,12 +9,16 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
"dist"
|
|
11
11
|
],
|
|
12
|
+
"publishConfig": {
|
|
13
|
+
"access": "public"
|
|
14
|
+
},
|
|
12
15
|
"scripts": {
|
|
13
16
|
"prepublish": "npm run build",
|
|
14
17
|
"build": "node scripts/build.js",
|
|
15
18
|
"setup": "node scripts/setup.js",
|
|
16
19
|
"reset:local-state": "node scripts/resetLocalState.js",
|
|
17
|
-
"dev:link": "npm run build && npm link"
|
|
20
|
+
"dev:link": "npm run build && npm link",
|
|
21
|
+
"dev:debug": "node scripts/dev-debug.js"
|
|
18
22
|
},
|
|
19
23
|
"keywords": [
|
|
20
24
|
"TTMG",
|
|
@@ -22,6 +26,7 @@
|
|
|
22
26
|
],
|
|
23
27
|
"author": "zhanghongyang.mocha",
|
|
24
28
|
"dependencies": {
|
|
29
|
+
"@anrans001/ttmg-wasmtool": "^0.3.2",
|
|
25
30
|
"acorn": "^8.15.0",
|
|
26
31
|
"archiver": "^7.0.1",
|
|
27
32
|
"axios": "^1.11.0",
|
|
Binary file
|
|
Binary file
|