name: Deploy to GitHub Pages on: push: branches: - main permissions: contents: write jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: '16' - name: Install dependencies for minification and image conversion run: | sudo apt-get update sudo apt-get install -y webp 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 cp -r src/images/* dist/images || echo "No images to copy" for file in src/css/*.css; do [ -e "$file" ] || continue csso "$file" -o "dist/css/$(basename "${file%.css}.min.css")" done for file in src/js/*.js; do [ -e "$file" ] || continue uglifyjs "$file" -o "dist/js/$(basename "${file%.js}.min.js")" done for file in src/images/*.{png,jpg,jpeg}; do [ -e "$file" ] || continue cwebp "$file" -o "dist/images/$(basename "${file%.*}.webp")" done - name: Deploy to gh-pages uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./dist publish_branch: gh-pages