まず、圧縮ツールを入れる
$ brew install jpegoptim pngquant optipng前提
// ==================================================
// 画像最適化メモ(最新版 / 動作確認済み)
// ==================================================
//
// ■ 動作確認環境
// - macOS (zsh)
// - Git 管理リポジトリ内で実行
// - Homebrew 導入済み
// - 使用ツール:jpegoptim / pngquant / optipng
//
// ■ 方針
// - jpg / png を手で切り分けない
// - Git差分(HEADとの差分)だけ処理する
// - ファイル数が多くても落ちないように「1ファイルずつ処理」する
// - PNG は pngquant → optipng(可逆仕上げ)
// - Git管理前提なので上書きOK(戻すのも簡単)
// ==================================================
1) 差分の確認(git diff –stat)
// 変更ファイルと差分量(画像最適化後の確認に便利)
git diff --stat
// 変更ファイル名だけ一覧(staged+unstaged)
git diff --name-only HEAD
// 画像だけに絞る(jpg/png)
git diff --name-only HEAD | grep -Ei '\.(jpe?g|png)$'2) 画像最適化(Git差分だけ・安全版 / 動作確認済み)
2-1) 標準品質(JPG80 / PNG70-85)
git diff --name-only HEAD -z \
| xargs -0 -n 1 sh -c '
f="$1"
case "$f" in
*.jpg|*.JPG|*.jpeg|*.JPEG)
jpegoptim --max=80 --strip-all "$f"
;;
*.png|*.PNG)
pngquant --quality=70-85 --ext .png --force "$f" \
&& optipng -o2 "$f"
;;
esac
' _
2-2) 高品質(JPG85 / PNG80-90)
git diff --name-only HEAD -z \
| xargs -0 -n 1 sh -c '
f="$1"
case "$f" in
*.jpg|*.JPG|*.jpeg|*.JPEG)
jpegoptim --max=85 --strip-all "$f"
;;
*.png|*.PNG)
pngquant --quality=80-90 --ext .png --force "$f" \
&& optipng -o2 "$f"
;;
esac
' _
2-3) 対象を特定ディレクトリに限定(例:recruit/images 配下のみ)
git diff --name-only HEAD -z -- wp-content/themes/bmt/recruit/images \
| xargs -0 -n 1 sh -c '
f="$1"
case "$f" in
*.jpg|*.JPG|*.jpeg|*.JPEG)
jpegoptim --max=80 --strip-all "$f"
;;
*.png|*.PNG)
pngquant --quality=70-85 --ext .png --force "$f" \
&& optipng -o2 "$f"
;;
esac
' _
3) 元に戻したい場合(1ファイルだけ)
3-1) working tree の変更だけ戻す(未ステージ分を破棄)
git restore path/to/file.jpg4) ステージ済みまで戻す場合(2段階:unstage → restore)
// 1) ステージから外す(indexを戻す)
git restore --staged path/to/file.jpg
// 2) working tree も戻す(作業ツリーを戻す)
git restore path/to/file.jpg5) 仕上げチェック(運用)
// 状態確認
git status
// 差分量確認
git diff --stat
// 問題なければ add
git add -A
// もう一回確認
git status
コメントを残す