Optimize Your CI/CD Pipeline
Get instant insights into your CI/CD performance and costs. Reduce build times by up to 45% and save on infrastructure costs.
name: Compressed Size
on:
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: preactjs/compressed-size-action@v2
compressed-size-action
This action reports changes in compressed file sizes in your pull requests, supporting custom build scripts and file patterns.
What is compressed-size-action?β
The compressed-size-action
compares compressed file sizes between your PR and the target branch, helping you track size changes in key files without uploading data to external services. It supports various file types and build systems.
How to Customize the Installation Commandβ
You can override the default dependency installation command using the install-script
option. Here's an example using npm ci
with a workspace:
with:
install-script: "npm ci --workspace=packages/my-subpackage"
How to Customize the Build Scriptβ
To change the build script from the default "build"
npm script, use the build-script
option. For example, if you have a custom CI build script:
with:
build-script: "ci"
How to Clean Up Between Buildsβ
If you need to clean up modified files between the upstream and PR builds, you can specify a clean-script
:
with:
clean-script: "clean"
Hereβs how it could look in your package.json
:
{
"scripts": {
"clean": "rm -rf packages/node_modules"
}
}
How to Track Specific Filesβ
To change the list of files being tracked, use the pattern
and exclude
options. Here's how you can specify which files to track:
with:
pattern: "./build-output/**/*.{js,css,html,json}"
exclude: "{./build-output/manifest.json,**/*.map,**/node_modules/**}"
By default, it tracks JavaScript files within dist/
directories.
How to Handle Hashed Filenamesβ
To remove hashes from filenames during comparison, use the strip-hash
option. For example:
with:
strip-hash: "\\b\\w{5}\\."
This would strip hashes like foo.abcde.js
to foo.js
.
How to Set a Minimum Change Thresholdβ
You can set a minimum change threshold in bytes to ignore small changes. For example, setting a threshold of 100 bytes:
with:
minimum-change-threshold: 100
Files with a delta smaller than 100 bytes will be considered unchanged.
How to Change the Compression Algorithmβ
By default, gzip compression is used. You can change this to brotli or disable compression entirely using the compression
option:
with:
compression: "none"
How to Run the Action Multiple Times in a PRβ
If you need to check multiple bundles in a single PR, use the comment-key
option to distinguish between different runs. For example:
with:
build-script: "build:modern"
comment-key: modern
And for a legacy bundle:
with:
build-script: "build:legacy"
comment-key: legacy
This ensures separate comments are created for each run.