Explorar el Código

fix(tauri-build): rerun if assets or icons change (#4910)

Lucas Fernandes Nogueira hace 3 años
padre
commit
ff8fd7619a

+ 5 - 0
.changes/build-codegen-rerun.md

@@ -0,0 +1,5 @@
+---
+"tauri-build": patch
+---
+
+Rerun codegen if assets or icons change.

+ 35 - 0
core/tauri-build/src/codegen/context.rs

@@ -10,6 +10,7 @@ use std::{
   path::PathBuf,
 };
 use tauri_codegen::{context_codegen, ContextData};
+use tauri_utils::config::{AppUrl, WindowUrl};
 
 // TODO docs
 /// A builder for generating a Tauri application context during compile time.
@@ -92,6 +93,40 @@ impl CodegenContext {
   /// Non-panicking [`Self::build`]
   pub fn try_build(self) -> Result<PathBuf> {
     let (config, config_parent) = tauri_codegen::get_config(&self.config_path)?;
+
+    // rerun if changed
+    let app_url = if self.dev {
+      &config.build.dev_path
+    } else {
+      &config.build.dist_dir
+    };
+    match app_url {
+      AppUrl::Url(WindowUrl::App(p)) => {
+        println!("cargo:rerun-if-changed={}", config_parent.join(p).display());
+      }
+      AppUrl::Files(files) => {
+        for path in files {
+          println!(
+            "cargo:rerun-if-changed={}",
+            config_parent.join(path).display()
+          );
+        }
+      }
+      _ => (),
+    }
+    for icon in &config.tauri.bundle.icon {
+      println!(
+        "cargo:rerun-if-changed={}",
+        config_parent.join(icon).display()
+      );
+    }
+    if let Some(tray_icon) = config.tauri.system_tray.as_ref().map(|t| &t.icon_path) {
+      println!(
+        "cargo:rerun-if-changed={}",
+        config_parent.join(tray_icon).display()
+      );
+    }
+
     let code = context_codegen(ContextData {
       dev: self.dev,
       config,

+ 0 - 4
core/tauri-build/src/lib.rs

@@ -293,10 +293,6 @@ pub fn try_build(attributes: Attributes) -> Result<()> {
     )?;
   }
 
-  for icon in &config.tauri.bundle.icon {
-    println!("cargo:rerun-if-changed={}", icon);
-  }
-
   #[allow(unused_mut, clippy::redundant_clone)]
   let mut resources = config.tauri.bundle.resources.clone().unwrap_or_default();
   #[cfg(windows)]