From 2c21bdbf57cf0e422cc6512f11ad9d843f9e2612 Mon Sep 17 00:00:00 2001 From: blek Date: Sat, 14 Oct 2023 00:10:47 +1000 Subject: [PATCH] minify css on build --- filed/Cargo.lock | 46 +++++++++++++++++++++ filed/Cargo.toml | 3 ++ filed/build.rs | 29 +++++++++++++ filed/static/.gitignore | 4 ++ filed/static/{ => assets}/delay.js | 0 filed/static/{ => assets}/dragndrop-form.js | 0 filed/static/{ => assets}/form.css | 0 filed/static/{ => assets}/js-only.css | 0 filed/static/{ => assets}/js-only.js | 0 filed/static/{ => assets}/mobile-hide.css | 0 filed/static/{ => assets}/paint.css | 0 11 files changed, 82 insertions(+) create mode 100644 filed/build.rs create mode 100644 filed/static/.gitignore rename filed/static/{ => assets}/delay.js (100%) rename filed/static/{ => assets}/dragndrop-form.js (100%) rename filed/static/{ => assets}/form.css (100%) rename filed/static/{ => assets}/js-only.css (100%) rename filed/static/{ => assets}/js-only.js (100%) rename filed/static/{ => assets}/mobile-hide.css (100%) rename filed/static/{ => assets}/paint.css (100%) diff --git a/filed/Cargo.lock b/filed/Cargo.lock index 00c3f08..1daa450 100644 --- a/filed/Cargo.lock +++ b/filed/Cargo.lock @@ -191,6 +191,12 @@ dependencies = [ "tokio-util", ] +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + [[package]] name = "core-foundation-sys" version = "0.8.4" @@ -216,12 +222,36 @@ dependencies = [ "typenum", ] +[[package]] +name = "css-minify" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874c6e2d19f8d4a285083b11a3241bfbe01ac3ed85f26e1e6b34888d960552bd" +dependencies = [ + "derive_more", + "indexmap", + "nom", +] + [[package]] name = "data-encoding" version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 1.0.109", +] + [[package]] name = "digest" version = "0.10.7" @@ -279,6 +309,7 @@ dependencies = [ "askama", "bytes", "chrono", + "css-minify", "dotenvy", "femme", "futures-util", @@ -927,6 +958,15 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + [[package]] name = "rustls-pemfile" version = "1.0.3" @@ -948,6 +988,12 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" +[[package]] +name = "semver" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" + [[package]] name = "serde" version = "1.0.188" diff --git a/filed/Cargo.toml b/filed/Cargo.toml index 936abf2..047676f 100644 --- a/filed/Cargo.toml +++ b/filed/Cargo.toml @@ -27,3 +27,6 @@ warp = "0.3.6" [profile.release] opt-level = 'z' lto = true + +[build-dependencies] +css-minify = "0.3.1" diff --git a/filed/build.rs b/filed/build.rs new file mode 100644 index 0000000..92ae10c --- /dev/null +++ b/filed/build.rs @@ -0,0 +1,29 @@ +use std::{fs, path::PathBuf}; +use css_minify::optimizations::{Minifier, Level}; + +fn main() { + let assets = fs::read_dir("static/assets").unwrap(); + let assets = assets + .map(|x| x.unwrap().path()) + .filter(|x| x.extension().is_some()) + .filter(|x| { + let ext = x.extension().clone().unwrap().to_str().unwrap().to_string(); + ext == "css" + }) + .collect::>(); + + assets.iter().for_each(|asset| { + let bundled = Minifier::default().minify( + String::from_utf8(fs::read(asset).unwrap()).unwrap().as_str(), + Level::Zero + ).unwrap(); + + fs::write({ + let mut path = asset.components().take(1).collect::(); + path.push(asset.components().last().unwrap()); + println!("{:?}", path); + path + }, bundled).unwrap(); + panic!() + }) +} \ No newline at end of file diff --git a/filed/static/.gitignore b/filed/static/.gitignore new file mode 100644 index 0000000..70a16e5 --- /dev/null +++ b/filed/static/.gitignore @@ -0,0 +1,4 @@ +*.js +*.css +!assets/*.js +!assets/*.css diff --git a/filed/static/delay.js b/filed/static/assets/delay.js similarity index 100% rename from filed/static/delay.js rename to filed/static/assets/delay.js diff --git a/filed/static/dragndrop-form.js b/filed/static/assets/dragndrop-form.js similarity index 100% rename from filed/static/dragndrop-form.js rename to filed/static/assets/dragndrop-form.js diff --git a/filed/static/form.css b/filed/static/assets/form.css similarity index 100% rename from filed/static/form.css rename to filed/static/assets/form.css diff --git a/filed/static/js-only.css b/filed/static/assets/js-only.css similarity index 100% rename from filed/static/js-only.css rename to filed/static/assets/js-only.css diff --git a/filed/static/js-only.js b/filed/static/assets/js-only.js similarity index 100% rename from filed/static/js-only.js rename to filed/static/assets/js-only.js diff --git a/filed/static/mobile-hide.css b/filed/static/assets/mobile-hide.css similarity index 100% rename from filed/static/mobile-hide.css rename to filed/static/assets/mobile-hide.css diff --git a/filed/static/paint.css b/filed/static/assets/paint.css similarity index 100% rename from filed/static/paint.css rename to filed/static/assets/paint.css