minify only some files
This commit is contained in:
parent
3ff2c60e58
commit
c423780266
1 changed files with 29 additions and 7 deletions
36
src/main.rs
36
src/main.rs
|
@ -27,24 +27,46 @@ async fn main() -> io::Result<()> {
|
|||
println!("Listening to {}://{}:{}", config.scheme, addr.0, addr.1);
|
||||
|
||||
let static_folder = "static";
|
||||
let dist_folder = "dist";
|
||||
let dist_folder = format!("dist/{static_folder}");
|
||||
|
||||
// The static folder is minimized only in release mode
|
||||
let folder = if cfg!(debug_assertions) {
|
||||
format!("{static_folder}/")
|
||||
} else {
|
||||
let cfg = Cfg::new();
|
||||
let cfg = Cfg::spec_compliant();
|
||||
|
||||
for entry in glob(&format!("{static_folder}/**/*.*")).unwrap() {
|
||||
let path = entry.unwrap();
|
||||
let data = fs::read_to_string(&path).unwrap();
|
||||
let minified = minify(data.as_bytes(), &cfg);
|
||||
let path_with_dist = path.to_string_lossy().replace(static_folder, &dist_folder);
|
||||
|
||||
let path_with_dist = path.to_string_lossy().replace(static_folder, dist_folder);
|
||||
// Create folders
|
||||
let new_path = Path::new(&path_with_dist);
|
||||
fs::create_dir_all(new_path.parent().unwrap()).unwrap();
|
||||
let mut file = File::create(path_with_dist)?;
|
||||
file.write_all(&minified)?;
|
||||
|
||||
let mut copy = true;
|
||||
if let Some(ext) = path.extension() {
|
||||
// List of files who should be minified
|
||||
if ["html", "css", "js", "svg", "webmanifest", "xml"]
|
||||
.iter()
|
||||
.any(|item| ext.to_string_lossy().to_lowercase().contains(item))
|
||||
{
|
||||
// We won't copy, we'll minify
|
||||
copy = false;
|
||||
|
||||
// Minify
|
||||
let data = fs::read(&path).unwrap();
|
||||
let minified = minify(&data, &cfg);
|
||||
|
||||
// Write files
|
||||
let mut file = File::create(&path_with_dist)?;
|
||||
file.write_all(&minified)?;
|
||||
}
|
||||
}
|
||||
|
||||
if copy {
|
||||
// If no minification is needed
|
||||
fs::copy(path, path_with_dist)?;
|
||||
}
|
||||
}
|
||||
|
||||
format!("{dist_folder}/")
|
||||
|
|
Loading…
Reference in a new issue