From 01d69b67c72e04d5ce1d57d86946e12fdc8e208f Mon Sep 17 00:00:00 2001 From: Sagar Vora Date: Fri, 17 Sep 2021 11:59:05 +0530 Subject: [PATCH 1/4] feat: automatically reload web pages whenever JS/CSS assets are rebuilt --- esbuild/esbuild.js | 10 ++++++++-- frappe/build.py | 3 +++ .../js/frappe/build_events/BuildSuccess.vue | 17 +++++++++++++---- .../frappe/build_events/build_events.bundle.js | 5 +++-- 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/esbuild/esbuild.js b/esbuild/esbuild.js index 9074beae06..b0ed92f9ec 100644 --- a/esbuild/esbuild.js +++ b/esbuild/esbuild.js @@ -44,6 +44,11 @@ let argv = yargs type: "boolean", description: "Run in watch mode and rebuild on file changes" }) + .option("auto-reload", { + type: "boolean", + description: `Automatically reload webpages when assets are rebuilt. + Can only be used with the --watch flag.` + }) .option("production", { type: "boolean", description: "Run build in production mode" @@ -475,7 +480,8 @@ async function notify_redis({ error, success }) { } if (success) { payload = { - success: true + success: true, + autoreload: argv["auto-reload"] }; } @@ -528,4 +534,4 @@ function log_rebuilt_assets(prev_assets, new_assets) { log(" " + filename); } log(); -} \ No newline at end of file +} diff --git a/frappe/build.py b/frappe/build.py index dfbe20f31e..ec092d4b57 100644 --- a/frappe/build.py +++ b/frappe/build.py @@ -235,6 +235,9 @@ def watch(apps=None): if apps: command += " --apps {apps}".format(apps=apps) + if frappe.conf.autoreload_on_build: + command += " --auto-reload" + check_node_executable() frappe_app_path = frappe.get_app_path("frappe", "..") frappe.commands.popen(command, cwd=frappe_app_path, env=get_node_env()) diff --git a/frappe/public/js/frappe/build_events/BuildSuccess.vue b/frappe/public/js/frappe/build_events/BuildSuccess.vue index 75a365fdc2..d489c4a1a3 100644 --- a/frappe/public/js/frappe/build_events/BuildSuccess.vue +++ b/frappe/public/js/frappe/build_events/BuildSuccess.vue @@ -3,8 +3,11 @@ v-if="is_shown" class="flex justify-between build-success-message align-center" > -
Compiled successfully
- + Compiled successfully + Refresh @@ -14,11 +17,17 @@ export default { name: "BuildSuccess", data() { return { - is_shown: false + is_shown: false, + autoreload: false, }; }, methods: { - show() { + show(data) { + if (data.autoreload) { + this.autoreload = true; + this.reload(); + } + this.is_shown = true; if (this.timeout) { clearTimeout(this.timeout); diff --git a/frappe/public/js/frappe/build_events/build_events.bundle.js b/frappe/public/js/frappe/build_events/build_events.bundle.js index 6c8986af3f..13b9c7a334 100644 --- a/frappe/public/js/frappe/build_events/build_events.bundle.js +++ b/frappe/public/js/frappe/build_events/build_events.bundle.js @@ -13,10 +13,11 @@ frappe.realtime.on("build_event", data => { } }); -function show_build_success() { +function show_build_success(data) { if (error) { error.hide(); } + if (!success) { let target = $('
') .appendTo($container) @@ -27,7 +28,7 @@ function show_build_success() { }); success = vm.$children[0]; } - success.show(); + success.show(data); } function show_build_error(data) { From d99403393acfbdefefce406a0025a7811306e4d3 Mon Sep 17 00:00:00 2001 From: Pruthvi Patel Date: Mon, 18 Oct 2021 17:52:33 +0530 Subject: [PATCH 2/4] fix: rename `auto-reload` to `live-reload` --- esbuild/esbuild.js | 4 ++-- frappe/build.py | 8 ++++++-- frappe/public/js/frappe/build_events/BuildSuccess.vue | 8 ++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/esbuild/esbuild.js b/esbuild/esbuild.js index b0ed92f9ec..c71fbc752c 100644 --- a/esbuild/esbuild.js +++ b/esbuild/esbuild.js @@ -44,7 +44,7 @@ let argv = yargs type: "boolean", description: "Run in watch mode and rebuild on file changes" }) - .option("auto-reload", { + .option("live-reload", { type: "boolean", description: `Automatically reload webpages when assets are rebuilt. Can only be used with the --watch flag.` @@ -481,7 +481,7 @@ async function notify_redis({ error, success }) { if (success) { payload = { success: true, - autoreload: argv["auto-reload"] + live_reload: argv["live-reload"] }; } diff --git a/frappe/build.py b/frappe/build.py index ec092d4b57..4472049ab7 100644 --- a/frappe/build.py +++ b/frappe/build.py @@ -235,8 +235,12 @@ def watch(apps=None): if apps: command += " --apps {apps}".format(apps=apps) - if frappe.conf.autoreload_on_build: - command += " --auto-reload" + live_reload = frappe.conf.live_reload + if "LIVE_RELOAD" in os.environ: + live_reload = os.environ["LIVE_RELOAD"] + + if live_reload: + command += " --live-reload" check_node_executable() frappe_app_path = frappe.get_app_path("frappe", "..") diff --git a/frappe/public/js/frappe/build_events/BuildSuccess.vue b/frappe/public/js/frappe/build_events/BuildSuccess.vue index d489c4a1a3..5ab40271bb 100644 --- a/frappe/public/js/frappe/build_events/BuildSuccess.vue +++ b/frappe/public/js/frappe/build_events/BuildSuccess.vue @@ -5,7 +5,7 @@ > Compiled successfully Refresh @@ -18,13 +18,13 @@ export default { data() { return { is_shown: false, - autoreload: false, + live_reload: false, }; }, methods: { show(data) { - if (data.autoreload) { - this.autoreload = true; + if (data.live_reload) { + this.live_reload = true; this.reload(); } From 3cec476cbc2f62d2ce4bd010657a7ec7455a7bc6 Mon Sep 17 00:00:00 2001 From: Pruthvi Patel Date: Mon, 18 Oct 2021 19:07:13 +0530 Subject: [PATCH 3/4] fix: add whitespace --- esbuild/esbuild.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esbuild/esbuild.js b/esbuild/esbuild.js index c71fbc752c..faccb36698 100644 --- a/esbuild/esbuild.js +++ b/esbuild/esbuild.js @@ -46,7 +46,7 @@ let argv = yargs }) .option("live-reload", { type: "boolean", - description: `Automatically reload webpages when assets are rebuilt. + description: `Automatically reload web pages when assets are rebuilt. Can only be used with the --watch flag.` }) .option("production", { From 770bda8cc624b9dc6a97113186701e8156b85034 Mon Sep 17 00:00:00 2001 From: Sagar Vora Date: Tue, 19 Oct 2021 04:04:00 +0530 Subject: [PATCH 4/4] fix: use `cint`, as `os.environ` only contains string values --- frappe/build.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frappe/build.py b/frappe/build.py index 4472049ab7..ddce94ac2f 100644 --- a/frappe/build.py +++ b/frappe/build.py @@ -235,9 +235,9 @@ def watch(apps=None): if apps: command += " --apps {apps}".format(apps=apps) - live_reload = frappe.conf.live_reload - if "LIVE_RELOAD" in os.environ: - live_reload = os.environ["LIVE_RELOAD"] + live_reload = frappe.utils.cint( + os.environ.get("LIVE_RELOAD", frappe.conf.live_reload) + ) if live_reload: command += " --live-reload"