/imgcmp

📷A GitHub Action that automatically optimizes images in your repository. Supported image file formats: JPEG, PNG, GIF, SVG, WEBP

Primary LanguageTypeScriptDo What The F*ck You Want To Public LicenseWTFPL

imgcmp v2.0.4

ci marketplace

This GitHub Actions optimizes images in your repository. You will receive a pull request with optimized images. This Github Actions is inspired by ImgBot.

A pull request example:

Usage

name: imgcmp
on:
  push:
    branches:
      - main
      - master
jobs:
  imgcmp:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
    steps:
      - uses: 9sako6/imgcmp@v2.0.4
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

Warning

- uses: 9sako6/imgcmp@master # NG

Do not reference master since that is the latest code and can be carrying breaking changes of the next major version.

If you want to run this action only once a week, please add the following lines.

name: imgcmp
on:
  schedule:
    - cron: "0 0 * * 1" # Weekly build
jobs:
  imgcmp:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
    steps:
      - uses: 9sako6/imgcmp@v2.0.4
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

Then, you will receive a pull request with optimized images every Monday at 0:00.

Configuration

Action inputs

Name Description Required
token GITHUB_TOKEN or a Personal access token (PAT). In a private repository, you have to use a PAT with enough permissions. See How to use a Personal Access Token. true
paths-ignore-regexp Regular expression for images' paths you don't want to compress. false

paths-ignore-regexp

imgcmp offers an ignore option. paths-ignore-regexp is regular expression for images' paths you don't want to compress.

Example:

name: imgcmp
on:
  push:
    branches:
      - main
      - master
jobs:
  imgcmp:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
    steps:
      - uses: 9sako6/imgcmp@v2.0.4
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          paths-ignore-regexp: "(ignore/.*)|(public/.*)"

Action outputs

Name Description
pull-request-number A pull request number created by imgcmp.

Step outputs can be accessed as in the following example.

      - uses: 9sako6/imgcmp@v2.0.4
        id: imgcmp
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
      - name: Check outputs
        run: |
          echo ${{ steps.imgcmp.outputs.pull-request-number }}

Supported image formats

  • JPEG/JPG
  • PNG
  • GIF
  • SVG
  • WEBP

Optimization tools

This bot uses these optimizers.

  • -m85: this will store the image with 85% quality
  • -o2: this sets the optimization level 2 (there is 0-7 optimization levels)
  • -O3: this sets the optimization level to Gifsicle's maximum

SVGO's default configuration will be used.

  • -q 75: cwebp's default optimization level

Benchmark

It took 34 sec to create the following PR.

Change Log

v2.0.4 (May 7, 2023)

Bug fixes.

v2.0.3 (March 25, 2023)

Bug fixes.

  • truncate long messages (#272)

v2.0.2 (June 26, 2022)

  • Skip to create PR if there are small changes (#184)
  • Add pull-request-number outputs (#169)

v2.0.1 (April 10, 2022)

Bug fixes.

  • Fix the problem that actions fail when a trigger event is pull_request (#99)
  • Fix the problem that actions fail when paths-ignore-regexp is empty (#51)

v2.0.0 (February 6, 2022)

There are breaking changes from version 1.0.1.

  • Add token input (#26)
    • GITHUB_TOKEN option in env was deleted.
  • Add paths-ignore-regexp input (#26)
    • IGNORED_FILES option in env was deleted.
  • Refactoring the pull request template (#26)

Roadmap

  • Make it more maintainable...