minify js
This commit is contained in:
parent
5fff047b92
commit
b1292a2f47
|
@ -5,4 +5,8 @@ RUN cargo install cargo-watch && \
|
||||||
touch /opt/code/dev-entry.sh && \
|
touch /opt/code/dev-entry.sh && \
|
||||||
chmod +x /opt/code/dev-entry.sh
|
chmod +x /opt/code/dev-entry.sh
|
||||||
|
|
||||||
|
RUN apt update && \
|
||||||
|
apt install nodejs npm -y --no-install-recommends && \
|
||||||
|
npm i -g uglify-js
|
||||||
|
|
||||||
CMD [ "/opt/code/dev-entry.sh" ]
|
CMD [ "/opt/code/dev-entry.sh" ]
|
||||||
|
|
|
@ -17,6 +17,26 @@ version = "1.0.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ahash"
|
||||||
|
version = "0.8.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"once_cell",
|
||||||
|
"version_check",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aho-corasick"
|
||||||
|
version = "0.7.20"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "android-tzdata"
|
name = "android-tzdata"
|
||||||
version = "0.1.1"
|
version = "0.1.1"
|
||||||
|
@ -315,6 +335,7 @@ dependencies = [
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"hex",
|
"hex",
|
||||||
"log",
|
"log",
|
||||||
|
"minify-js",
|
||||||
"num",
|
"num",
|
||||||
"redis",
|
"redis",
|
||||||
"serde",
|
"serde",
|
||||||
|
@ -447,6 +468,16 @@ version = "0.12.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hashbrown"
|
||||||
|
version = "0.13.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
|
||||||
|
dependencies = [
|
||||||
|
"ahash",
|
||||||
|
"bumpalo",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "headers"
|
name = "headers"
|
||||||
version = "0.3.9"
|
version = "0.3.9"
|
||||||
|
@ -613,7 +644,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
|
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autocfg",
|
"autocfg",
|
||||||
"hashbrown",
|
"hashbrown 0.12.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -631,6 +662,12 @@ dependencies = [
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lazy_static"
|
||||||
|
version = "1.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.148"
|
version = "0.2.148"
|
||||||
|
@ -675,6 +712,16 @@ dependencies = [
|
||||||
"unicase",
|
"unicase",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "minify-js"
|
||||||
|
version = "0.5.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "22d6c512a82abddbbc13b70609cb2beff01be2c7afff534d6e5e1c85e438fc8b"
|
||||||
|
dependencies = [
|
||||||
|
"lazy_static",
|
||||||
|
"parse-js",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "minimal-lexical"
|
name = "minimal-lexical"
|
||||||
version = "0.2.1"
|
version = "0.2.1"
|
||||||
|
@ -833,6 +880,19 @@ version = "1.18.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
|
checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "parse-js"
|
||||||
|
version = "0.17.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9ec3b11d443640ec35165ee8f6f0559f1c6f41878d70330fe9187012b5935f02"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"bumpalo",
|
||||||
|
"hashbrown 0.13.2",
|
||||||
|
"lazy_static",
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "percent-encoding"
|
name = "percent-encoding"
|
||||||
version = "2.3.0"
|
version = "2.3.0"
|
||||||
|
|
|
@ -30,3 +30,4 @@ lto = true
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
css-minify = "0.3.1"
|
css-minify = "0.3.1"
|
||||||
|
minify-js = "0.5.6"
|
||||||
|
|
|
@ -1,28 +1,59 @@
|
||||||
use std::{fs, path::PathBuf};
|
|
||||||
|
use std::{fs, path::PathBuf, ffi::OsStr, process::Command};
|
||||||
|
|
||||||
use css_minify::optimizations::{Minifier, Level};
|
use css_minify::optimizations::{Minifier, Level};
|
||||||
|
|
||||||
|
fn asset_path(asset: &PathBuf) -> PathBuf {
|
||||||
|
let mut path = asset.components().take(1).collect::<PathBuf>();
|
||||||
|
path.push(asset.components().last().unwrap());
|
||||||
|
path
|
||||||
|
}
|
||||||
|
|
||||||
|
fn extfilter(valid: String, x: Option<&OsStr>) -> bool {
|
||||||
|
if x.is_none() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
let ext = x.clone().unwrap().to_str().unwrap().to_string();
|
||||||
|
ext == valid
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let assets = fs::read_dir("static/assets").unwrap();
|
let assets = fs::read_dir("static/assets").unwrap();
|
||||||
let assets = assets
|
let assets = assets
|
||||||
.map(|x| x.unwrap().path())
|
.map(|x| x.unwrap().path())
|
||||||
.filter(|x| x.extension().is_some())
|
.filter(|x| x.extension().is_some())
|
||||||
.filter(|x| {
|
|
||||||
let ext = x.extension().clone().unwrap().to_str().unwrap().to_string();
|
|
||||||
ext == "css"
|
|
||||||
})
|
|
||||||
.collect::<Vec<PathBuf>>();
|
.collect::<Vec<PathBuf>>();
|
||||||
|
|
||||||
assets.iter().for_each(|asset| {
|
let styles = assets
|
||||||
|
.iter()
|
||||||
|
.filter(|x| {
|
||||||
|
extfilter("css".into(), x.extension())
|
||||||
|
})
|
||||||
|
.collect::<Vec<&PathBuf>>();
|
||||||
|
|
||||||
|
let scripts = assets
|
||||||
|
.iter()
|
||||||
|
.filter(|x| {
|
||||||
|
extfilter("js".into(), x.extension())
|
||||||
|
})
|
||||||
|
.collect::<Vec<&PathBuf>>();
|
||||||
|
|
||||||
|
styles.iter().for_each(|asset| {
|
||||||
let bundled = Minifier::default().minify(
|
let bundled = Minifier::default().minify(
|
||||||
String::from_utf8(fs::read(asset).unwrap()).unwrap().as_str(),
|
String::from_utf8(fs::read(asset).unwrap()).unwrap().as_str(),
|
||||||
Level::Zero
|
Level::Zero
|
||||||
).unwrap();
|
).unwrap();
|
||||||
|
|
||||||
fs::write({
|
fs::write(asset_path(asset), bundled).unwrap();
|
||||||
let mut path = asset.components().take(1).collect::<PathBuf>();
|
});
|
||||||
path.push(asset.components().last().unwrap());
|
|
||||||
println!("{:?}", path);
|
scripts.iter().for_each(|asset| {
|
||||||
path
|
Command::new("uglifyjs")
|
||||||
}, bundled).unwrap();
|
.arg("-c")
|
||||||
|
.arg(asset)
|
||||||
|
.arg("-o")
|
||||||
|
.arg(asset_path(asset))
|
||||||
|
.spawn()
|
||||||
|
.unwrap();
|
||||||
})
|
})
|
||||||
}
|
}
|
Loading…
Reference in New Issue