@mandujs/cli 0.18.6 → 0.18.7
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/package.json +2 -2
- package/src/commands/dev.ts +63 -37
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mandujs/cli",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.7",
|
|
4
4
|
"description": "Agent-Native Fullstack Framework - 에이전트가 코딩해도 아키텍처가 무너지지 않는 개발 OS",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/main.ts",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"access": "public"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@mandujs/core": "^0.18.
|
|
35
|
+
"@mandujs/core": "^0.18.18",
|
|
36
36
|
"@mandujs/ate": "^0.17.0",
|
|
37
37
|
"cfonts": "^3.3.0"
|
|
38
38
|
},
|
package/src/commands/dev.ts
CHANGED
|
@@ -243,6 +243,35 @@ export async function dev(options: DevOptions = {}): Promise<void> {
|
|
|
243
243
|
await buildClientBundles(manifest, rootDir, { minify: false });
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
+
// Dev 번들러 콜백 (named 함수로 추출 — 재시작 시 재사용)
|
|
247
|
+
const handleRebuild = (result: { routeId: string; success: boolean; error?: string }) => {
|
|
248
|
+
if (result.success) {
|
|
249
|
+
if (result.routeId === "*") {
|
|
250
|
+
hmrServer?.broadcast({
|
|
251
|
+
type: "reload",
|
|
252
|
+
data: { timestamp: Date.now() },
|
|
253
|
+
});
|
|
254
|
+
} else {
|
|
255
|
+
hmrServer?.broadcast({
|
|
256
|
+
type: "island-update",
|
|
257
|
+
data: { routeId: result.routeId, timestamp: Date.now() },
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
} else {
|
|
261
|
+
hmrServer?.broadcast({
|
|
262
|
+
type: "error",
|
|
263
|
+
data: { routeId: result.routeId, message: result.error },
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
const handleBundlerError = (error: Error, routeId?: string) => {
|
|
269
|
+
hmrServer?.broadcast({
|
|
270
|
+
type: "error",
|
|
271
|
+
data: { routeId, message: error.message },
|
|
272
|
+
});
|
|
273
|
+
};
|
|
274
|
+
|
|
246
275
|
if (hasIslands && hmrEnabled) {
|
|
247
276
|
// HMR 서버 시작
|
|
248
277
|
hmrServer = createHMRServer(port);
|
|
@@ -252,43 +281,40 @@ export async function dev(options: DevOptions = {}): Promise<void> {
|
|
|
252
281
|
rootDir,
|
|
253
282
|
manifest,
|
|
254
283
|
watchDirs: devConfig.watchDirs,
|
|
255
|
-
onRebuild:
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
},
|
|
290
|
-
});
|
|
291
|
-
},
|
|
284
|
+
onRebuild: handleRebuild,
|
|
285
|
+
onError: handleBundlerError,
|
|
286
|
+
});
|
|
287
|
+
|
|
288
|
+
// 재시작 핸들러 등록
|
|
289
|
+
hmrServer.setRestartHandler(async () => {
|
|
290
|
+
// 1. 레지스트리 초기화
|
|
291
|
+
clearDefaultRegistry();
|
|
292
|
+
registeredLayouts.clear();
|
|
293
|
+
|
|
294
|
+
// 2. 라우트 재스캔
|
|
295
|
+
const resolved = await resolveManifest(rootDir, { fsRoutes: config.fsRoutes });
|
|
296
|
+
manifest = resolved.manifest;
|
|
297
|
+
|
|
298
|
+
// 3. 핸들러 재등록 (importFresh)
|
|
299
|
+
await registerHandlers(manifest, true);
|
|
300
|
+
|
|
301
|
+
// 4. Dev 번들러 재시작
|
|
302
|
+
devBundler?.close();
|
|
303
|
+
devBundler = await startDevBundler({
|
|
304
|
+
rootDir,
|
|
305
|
+
manifest,
|
|
306
|
+
watchDirs: devConfig.watchDirs,
|
|
307
|
+
onRebuild: handleRebuild,
|
|
308
|
+
onError: handleBundlerError,
|
|
309
|
+
});
|
|
310
|
+
|
|
311
|
+
// 5. 브라우저 전체 리로드
|
|
312
|
+
hmrServer?.broadcast({
|
|
313
|
+
type: "reload",
|
|
314
|
+
data: { timestamp: Date.now() },
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
console.log("✅ Full restart completed");
|
|
292
318
|
});
|
|
293
319
|
}
|
|
294
320
|
|