Skip to content

Commit

Permalink
Add component hot reload functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
danim1130 committed Nov 7, 2024
1 parent 3a932e7 commit 6a2cf46
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 3 deletions.
24 changes: 23 additions & 1 deletion components/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions components/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"dev": "vite build --watch",
"preview": "vite preview"
},
"devDependencies": {
Expand All @@ -19,6 +19,7 @@
},
"dependencies": {
"@intechstudio/grid-uikit": "^1.20240813.1834",
"typescript": "^5.5.4"
"typescript": "^5.5.4",
"ws": "^8.18.0"
}
}
2 changes: 2 additions & 0 deletions components/vite.config.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { defineConfig } from "vite";
import { svelte } from "@sveltejs/vite-plugin-svelte";
import { sveltePreprocess } from "svelte-preprocess";
import { notifyEditorAfterBuildPlugin } from "./vite.postbuild";

export default defineConfig({
plugins: [
Expand All @@ -12,6 +13,7 @@ export default defineConfig({
},
emitCss: false,
}),
notifyEditorAfterBuildPlugin(),
],
build: {
sourcemap: true,
Expand Down
42 changes: 42 additions & 0 deletions components/vite.postbuild.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import { PluginOption } from "vite";
import { WebSocket } from "ws";
import path from "path";

export function notifyEditorAfterBuildPlugin(): PluginOption {
return {
name: "postbuild-notify-editor",
closeBundle: () =>
new Promise<void>((resolve) => {
if (
process.env.WEB_COMPONENT_NAME &&
process.env.WEB_COMPONENT_NAME != "profile-cloud-dev"
) {
resolve();
}
let timeout = setTimeout(() => {
console.log("No connection to Editor, closing websocket connection");
ws.close();
resolve();
}, 3000);
let ws = new WebSocket("ws://localhost:9000");
ws.on("open", () => {
ws.send(
JSON.stringify({
type: "developer-package",
event: "components-build-complete",
id: "package-photoshop",
rootPath: path.resolve(__dirname, ".."),
}),
);
ws.close();
clearTimeout(timeout);
resolve();
});
ws.on("error", (err) => {
console.error(err);
clearTimeout(timeout);
resolve();
});
}),
};
}

0 comments on commit 6a2cf46

Please sign in to comment.