diff --git a/packages/hot-reload/Cargo.toml b/packages/hot-reload/Cargo.toml index 7f1759f03..99d5cb00d 100644 --- a/packages/hot-reload/Cargo.toml +++ b/packages/hot-reload/Cargo.toml @@ -23,4 +23,4 @@ serde_json = "1.0.91" serde = { version = "1", features = ["derive"] } execute = "0.2.11" once_cell = "1.17.0" -gitignore = "1.0.7" \ No newline at end of file +ignore = "0.4.19" \ No newline at end of file diff --git a/packages/hot-reload/src/lib.rs b/packages/hot-reload/src/lib.rs index 4e3f56ed7..da443df49 100644 --- a/packages/hot-reload/src/lib.rs +++ b/packages/hot-reload/src/lib.rs @@ -166,7 +166,7 @@ pub fn init(cfg: Config) { std::thread::spawn(move || { // try to find the gitingore file let gitignore_file_path = crate_dir.join(".gitignore"); - let gitignore_file = gitignore::File::new(&gitignore_file_path.as_path()); + let (gitignore, _) = ignore::gitignore::Gitignore::new(gitignore_file_path); let mut last_update_time = chrono::Local::now().timestamp(); @@ -220,15 +220,16 @@ pub fn init(cfg: Config) { .iter() .filter(|path| { // skip non rust files - matches!(path.extension().and_then(|p| p.to_str()), Some("rs" | "toml" | "css" | "html" | "js")) && + matches!( + path.extension().and_then(|p| p.to_str()), + Some("rs" | "toml" | "css" | "html" | "js") + )&& // skip excluded paths - !excluded_paths.iter().any(|p| path.starts_with(p)) && match &gitignore_file{ - Ok(file) => match file.is_excluded(path){ - Ok(excluded) => !excluded, - Err(_) => true, - }, - Err(_) => true, - } + !excluded_paths.iter().any(|p| path.starts_with(p)) && + // respect .gitignore + !gitignore + .matched_path_or_any_parents(path, false) + .is_ignore() }) .collect::>();