Skip to content

Commit 18a0722

Browse files
fatoldsun00jparez
authored andcommitted
chore(vite): better handle of hot reload with auto reconnect
1 parent 08db2f4 commit 18a0722

File tree

1 file changed

+59
-1
lines changed

1 file changed

+59
-1
lines changed

vite.config.js

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,67 @@ import { defineConfig } from 'vite';
22
import { viteSingleFile } from 'vite-plugin-singlefile';
33
import path from 'path';
44

5+
import basicSsl from '@vitejs/plugin-basic-ssl';
6+
57
export default defineConfig(({ mode }) => {
68
return {
7-
// plugins: [viteSingleFile()],
9+
plugins: [
10+
basicSsl(),
11+
{
12+
name: 'html-transform',
13+
transformIndexHtml(html) {
14+
if (mode === 'development') {
15+
let newHtml = html.replace(
16+
/<script src="\.\.\/dist\/js\/device-renderer\.min\.js" data-player-url><\/script>/,
17+
`
18+
<script type="module">
19+
import genyDeviceWebPlayer from '/src/index.js';
20+
window.genyDeviceWebPlayer = genyDeviceWebPlayer;
21+
22+
// --- Auto-connect dev helper ---
23+
const storageKey = 'geny_dev_auto_connect_ws';
24+
const wsInput = document.getElementById('wsAddress');
25+
const connectBtn = document.getElementById('connectExistingInstance');
26+
const stopBtn = document.getElementById('stop');
27+
28+
if (wsInput && connectBtn) {
29+
// Save WS address when connecting
30+
connectBtn.addEventListener('click', () => {
31+
if (wsInput.value) {
32+
sessionStorage.setItem(storageKey, wsInput.value);
33+
}
34+
});
35+
36+
// Clear saved WS when stopping
37+
if (stopBtn) {
38+
stopBtn.addEventListener('click', () => {
39+
sessionStorage.removeItem(storageKey);
40+
});
41+
}
42+
43+
// Auto-connect on page load if saved WS exists
44+
const savedWs = sessionStorage.getItem(storageKey);
45+
if (savedWs) {
46+
console.log('[Dev] Auto-connecting to:', savedWs);
47+
wsInput.value = savedWs;
48+
// Small delay to ensure player is ready
49+
setTimeout(() => connectBtn.click(), 500);
50+
}
51+
}
52+
</script>
53+
`,
54+
);
55+
// Remove dist CSS to rely on HMR from src/index.js import
56+
newHtml = newHtml.replace(
57+
/<link rel="stylesheet" href="\.\.\/dist\/css\/device-renderer\.min\.css" data-player-url \/>/,
58+
'<!-- dist css removed for dev HMR -->',
59+
);
60+
return newHtml;
61+
}
62+
return html;
63+
},
64+
},
65+
],
866
build: {
967
target: 'es2015',
1068
lib: {

0 commit comments

Comments
 (0)