From dcdf632884d6be4683aa0cd891434f5a0dc3e49d Mon Sep 17 00:00:00 2001 From: Kevin Peng Date: Sun, 20 Apr 2025 09:15:40 +0800 Subject: [PATCH] fix: unify directory creation for CSS and JS minification --- build.sh | 62 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 47 insertions(+), 15 deletions(-) diff --git a/build.sh b/build.sh index e45574c..95be00a 100644 --- a/build.sh +++ b/build.sh @@ -1,27 +1,59 @@ #!/bin/bash # Create necessary directories +echo "Creating necessary directories..." mkdir -p dist/css mkdir -p dist/js mkdir -p dist/images # Copy all images to dist/images while preserving folder structure +echo "Copying images to dist/images..." rsync -a src/images/ dist/images/ +echo "Images copied successfully." -# Convert images to WebP format while preserving folder structure -find src/images -type f \( -iname "*.png" -o -iname "*.jpg" -o -iname "*.jpeg" \) -exec sh -c ' - mkdir -p "dist/images/$(dirname "$1" | sed "s|^src/images/||")" && - cwebp "$1" -o "dist/images/$(dirname "$1" | sed "s|^src/images/||")/$(basename "${1%.*}.webp")" -' _ {} \; +# Generate a list of image files to convert to WebP +echo "Generating list of image files to convert to WebP..." +image_files=$(find src/images -type f \( -iname "*.png" -o -iname "*.jpg" -o -iname "*.jpeg" \)) +echo "Image files to process:" +echo "$image_files" -# Minify CSS files while preserving folder structure -find src/css -type f -name "*.css" -exec sh -c ' - mkdir -p "dist/css/$(dirname "$1" | sed "s|^src/||")" && - csso "$1" -o "dist/css/$(dirname "$1" | sed "s|^src/||")/$(basename "${1%.css}.min.css")" -' _ {} \; +# Convert images to WebP format +echo "Converting images to WebP format..." +for file in $image_files; do + target_dir="dist/images/$(dirname "$file" | sed "s|^src/images/||")" + mkdir -p "$target_dir" + echo "Processing image: $file -> $target_dir/$(basename "${file%.*}.webp")" + cwebp "$file" -o "$target_dir/$(basename "${file%.*}.webp")" +done -# Minify JS files while preserving folder structure -find src/js -type f -name "*.js" -exec sh -c ' - mkdir -p "dist/js/$(dirname "$1" | sed "s|^src/||")" && - uglifyjs "$1" -o "dist/js/$(dirname "$1" | sed "s|^src/||")/$(basename "${1%.js}.min.js")" -' _ {} \; \ No newline at end of file +# Generate a list of CSS files to minify +echo "Generating list of CSS files to minify..." +css_files=$(find src/css -type f -name "*.css") +echo "CSS files to process:" +echo "$css_files" + +# Minify CSS files +echo "Minifying CSS files..." +for file in $css_files; do + target_dir="dist/css/$(dirname "$file" | sed "s|^src/||")" + mkdir -p "$target_dir" + echo "Processing CSS: $file -> $target_dir/$(basename "${file%.css}.min.css")" + csso "$file" -o "$target_dir/$(basename "${file%.css}.min.css")" +done + +# Generate a list of JS files to minify +echo "Generating list of JS files to minify..." +js_files=$(find src/js -type f -name "*.js") +echo "JS files to process:" +echo "$js_files" + +# Minify JS files +echo "Minifying JS files..." +for file in $js_files; do + target_dir="dist/js/$(dirname "$file" | sed "s|^src/||")" + mkdir -p "$target_dir" + echo "Processing JS: $file -> $target_dir/$(basename "${file%.js}.min.js")" + uglifyjs "$file" -o "$target_dir/$(basename "${file%.js}.min.js")" +done + +echo "Build process completed." \ No newline at end of file