diff --git a/crates/mako/src/generate/generate_chunks.rs b/crates/mako/src/generate/generate_chunks.rs index e8b40dbb1..68fe12e3e 100644 --- a/crates/mako/src/generate/generate_chunks.rs +++ b/crates/mako/src/generate/generate_chunks.rs @@ -43,24 +43,26 @@ impl ChunkFile { // fixed os error 63 file name too long, reserve 48 bytes for _js-async、extension、.map and others let reserve_file_name_length = 207; let file_path = Path::new(&self.file_name); + let mut format_file_name = self.file_name.clone(); + if self.file_name.len() > reserve_file_name_length { + let mut hasher: XxHash64 = Default::default(); + hasher.write_str(self.file_name.as_str()); + let file_extension = file_path.extension().unwrap(); + let file_stem = file_path.file_stem().unwrap().to_string_lossy().to_string(); + let (_, reserve_file_path) = + file_stem.split_at(file_stem.len() - reserve_file_name_length); + format_file_name = format!( + "{}.{}.{}", + reserve_file_path, + &hasher.finish().to_string()[0..8], + file_extension.to_str().unwrap() + ); + } + if let Some(hash) = &self.hash { - hash_file_name(&self.file_name, hash) + hash_file_name(&format_file_name, hash) } else { - if self.file_name.len() > reserve_file_name_length { - let mut hasher: XxHash64 = Default::default(); - hasher.write_str(self.file_name.as_str()); - let file_extension = file_path.extension().unwrap(); - let file_stem = file_path.file_stem().unwrap().to_string_lossy().to_string(); - let (_, reserve_file_path) = - file_stem.split_at(file_stem.len() - reserve_file_name_length); - return format!( - "{}.{}.{}", - reserve_file_path, - &hasher.finish().to_string()[0..8], - file_extension.to_str().unwrap() - ); - } - self.file_name.clone() + format_file_name } }