From b66db585d26c21a62c459c14825b5964eadefe40 Mon Sep 17 00:00:00 2001 From: Kevin Peng Date: Sun, 20 Apr 2025 07:29:15 +0800 Subject: [PATCH] refactor build process to move image processing and minification to build.sh --- .github/workflows/deploy.yml | 13 +------------ build.sh | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 12 deletions(-) create mode 100644 build.sh diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 5046441..7b35afb 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -25,18 +25,7 @@ jobs: npm install -g uglify-js csso-cli - name: Build and minify project - run: | - mkdir -p dist/css - mkdir -p dist/js - mkdir -p dist/images - # Copy all images to dist/images - find src/images -type f -exec cp --parents {} dist \; || echo "No images to copy" - # Convert images to WebP format - find src/images -type f \( -iname "*.png" -o -iname "*.jpg" -o -iname "*.jpeg" \) -exec sh -c 'cwebp "$1" -o "dist/images/$(basename "${1%.*}.webp")"' _ {} \; - # Minify CSS files - find src/css -type f -name "*.css" -exec sh -c 'csso "$1" -o "dist/css/$(basename "${1%.css}.min.css")"' _ {} \; - # Minify JS files - find src/js -type f -name "*.js" -exec sh -c 'uglifyjs "$1" -o "dist/js/$(basename "${1%.js}.min.js")"' _ {} \; + run: ./build.sh - name: Deploy to gh-pages uses: peaceiris/actions-gh-pages@v4 diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..917cdc3 --- /dev/null +++ b/build.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Create necessary directories +mkdir -p dist/css +mkdir -p dist/js +mkdir -p dist/images + +# Copy all images to dist/images while preserving folder structure +rsync -a src/images/ dist/images/ + +# 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")" +' _ {} \; + +# 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/css/||")" && + csso "$1" -o "dist/css/$(dirname "$1" | sed "s|src/css/||")/$(basename "${1%.css}.min.css")" +' _ {} \; + +# 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/js/||")" && + uglifyjs "$1" -o "dist/js/$(dirname "$1" | sed "s|src/js/||")/$(basename "${1%.js}.min.js")" +' _ {} \; \ No newline at end of file