fix: show LAN HMR URLs for web dev
Respect LAN HMR host setting Print mobile-accessible local network URLs
This commit is contained in:
+26
-1
@@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
import { spawn } from 'node:child_process';
|
import { spawn } from 'node:child_process';
|
||||||
import { existsSync, rmSync } from 'node:fs';
|
import { existsSync, rmSync } from 'node:fs';
|
||||||
|
import os from 'node:os';
|
||||||
import path from 'node:path';
|
import path from 'node:path';
|
||||||
import { fileURLToPath } from 'node:url';
|
import { fileURLToPath } from 'node:url';
|
||||||
|
|
||||||
@@ -82,6 +83,20 @@ async function stopChildTree(child) {
|
|||||||
|
|
||||||
const uiPort = process.env.OPENCHAMBER_HMR_UI_PORT || '5180';
|
const uiPort = process.env.OPENCHAMBER_HMR_UI_PORT || '5180';
|
||||||
const backendPort = process.env.OPENCHAMBER_HMR_API_PORT || '3902';
|
const backendPort = process.env.OPENCHAMBER_HMR_API_PORT || '3902';
|
||||||
|
const hmrHost = process.env.OPENCHAMBER_HMR_HOST || '127.0.0.1';
|
||||||
|
|
||||||
|
function getLanAddresses() {
|
||||||
|
const addresses = [];
|
||||||
|
|
||||||
|
for (const networkAddresses of Object.values(os.networkInterfaces())) {
|
||||||
|
for (const address of networkAddresses || []) {
|
||||||
|
if (address.family !== 'IPv4' || address.internal) continue;
|
||||||
|
addresses.push(address.address);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return addresses;
|
||||||
|
}
|
||||||
|
|
||||||
function clearViteCache() {
|
function clearViteCache() {
|
||||||
const cacheDirs = [
|
const cacheDirs = [
|
||||||
@@ -103,7 +118,7 @@ const api = run('api', 'bun', ['run', '--cwd', 'packages/web', 'dev:server:watch
|
|||||||
const vite = run(
|
const vite = run(
|
||||||
'vite',
|
'vite',
|
||||||
'bun',
|
'bun',
|
||||||
['x', 'vite', '--force', '--host', '127.0.0.1', '--port', uiPort, '--strictPort'],
|
['x', 'vite', '--force', '--host', hmrHost, '--port', uiPort, '--strictPort'],
|
||||||
{
|
{
|
||||||
OPENCHAMBER_PORT: backendPort,
|
OPENCHAMBER_PORT: backendPort,
|
||||||
OPENCHAMBER_DISABLE_PWA_DEV: '1',
|
OPENCHAMBER_DISABLE_PWA_DEV: '1',
|
||||||
@@ -112,6 +127,16 @@ const vite = run(
|
|||||||
);
|
);
|
||||||
|
|
||||||
console.log(`[dev:web:hmr] UI with HMR: http://127.0.0.1:${uiPort}`);
|
console.log(`[dev:web:hmr] UI with HMR: http://127.0.0.1:${uiPort}`);
|
||||||
|
if (hmrHost === '0.0.0.0' || hmrHost === '::') {
|
||||||
|
const lanAddresses = getLanAddresses();
|
||||||
|
if (lanAddresses.length > 0) {
|
||||||
|
for (const address of lanAddresses) {
|
||||||
|
console.log(`[dev:web:hmr] LAN/mobile UI: http://${address}:${uiPort}`);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log('[dev:web:hmr] LAN/mobile UI: no LAN IPv4 address found');
|
||||||
|
}
|
||||||
|
}
|
||||||
console.log(`[dev:web:hmr] API: http://127.0.0.1:${backendPort}`);
|
console.log(`[dev:web:hmr] API: http://127.0.0.1:${backendPort}`);
|
||||||
console.log('[dev:web:hmr] IMPORTANT: open UI URL above for HMR; backend URL has no HMR');
|
console.log('[dev:web:hmr] IMPORTANT: open UI URL above for HMR; backend URL has no HMR');
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user