|
@@ -157,6 +157,10 @@ pub fn init<Ctx: HotReloadingContext + Send + 'static>(cfg: Config<Ctx>) {
|
|
|
|
|
|
// watch for changes
|
|
|
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 mut last_update_time = chrono::Local::now().timestamp();
|
|
|
|
|
|
let (tx, rx) = std::sync::mpsc::channel();
|
|
@@ -210,7 +214,13 @@ pub fn init<Ctx: HotReloadingContext + Send + 'static>(cfg: Config<Ctx>) {
|
|
|
// skip non rust files
|
|
|
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))
|
|
|
+ !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,
|
|
|
+ }
|
|
|
})
|
|
|
.collect::<Vec<_>>();
|
|
|
|