# action
**Repository Path**: mirrors_maxisam/action
## Basic Information
- **Project Name**: action
- **Description**: 📦📊 GitHub Action to reports on the size of your npm package
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: develop
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-03-04
- **Last Updated**: 2026-08-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
pkg-size action
[pkg-size-action](https://github.com/pkg-size/action) is a [GitHub Action](https://github.com/features/actions) for getting automated size reports on your pull-requests.
If you like this project, please star it & [follow me](https://github.com/privatenumber) to see what other cool projects I'm working on! ❤️
## ⭐️ Features
- 📦 **Auto-detects npm distribution assets** using [pkg-size](https://github.com/pkg-size/pkg-size)
- 🔥 **Node.js package installer agnostic** Supports auto lock-file installs from npm, yarn, pnpm
- 🗜 **See compression sizes** Option to show uncompressed, Gzip, and Brotli size
- ⚙️ **Configurable** Change the build command. Customize reports formats. Filter out unwanted files.
## 🚦 3-step setup
1. Create the following file in your repo: `.github/workflows/package-size-report.yml`:
```yaml
name: Package Size Report
on:
pull_request:
branches: [ master, develop ] # ⬅ Add other branches you want size checks on
jobs:
pkg-size-report:
name: Package Size Report
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '14' # ⬅ Specify a version of Node.js to build your app
- name: Package size report
uses: pkg-size/action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```
2. Try making a PR against one of the designated branches.
3. 📊 Get the pkg-size report as a comment on the PR!
You'll see a comment on your PR reporting the package size regression. This comment will be automatically updated as you push changes to your PR.
## 👨🏻🏫 Examples
Set a custom command to build
The default behavior detects whether `npm run build` exists. If not, it assumes your repo doesn't have a build step and won't try to install dependencies.
If your repo has a different build script, specify one with `build-command`. Disable building by passing in `false`.
```yaml
name: Package Size Report
on:
pull_request:
branches: [ master, develop ]
jobs:
pkg-size-report:
name: Package Size Report
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Package size report
uses: pkg-size/action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
build-command: npm run prod-build # ⬅ Set a different build script here
```
Specify node version
By default, `ubuntu-latest` has the latest version of node available. If your
repo needs to specify an exact version of node, you can use the `actions/setup-node` action.
```yaml
name: Package Size Report
on:
pull_request:
branches: [ master, develop ]
jobs:
pkg-size-report:
name: Package Size Report
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: '14.4.0'
- name: Package size report
uses: pkg-size/action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```
Hiding source-map changes from report
Source-maps might add unnecessary noise to your report. Hide them using a glob.
```yaml
name: Package Size Report
on:
pull_request:
branches: [ master, develop ]
jobs:
pkg-size-report:
name: Package Size Report
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Package size report
uses: pkg-size/action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
hide-files: '*.{js,css}.map' # Set a glob to filter out irrelevant files
```
Show unchanged & changed files in the same table
The default behavior hides unchanged files in a collapsible. To include unchanged files in the visible table, set `unchanged-files` to `show`.
```yaml
name: Package Size Report
on:
pull_request:
branches: [ master, develop ]
jobs:
pkg-size-report:
name: Package Size Report
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Package size report
uses: pkg-size/action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
unchanged-files: show # ⬅ Make unchanged files appear in the same table
```
Use Brotli size
Use `display-size: brotli` to only show [Brotli compression size](https://en.wikipedia.org/wiki/Brotli). Use a comma separated list to show multiple sizes.
```yaml
name: Package Size Report
on:
pull_request:
branches: [ master, develop ]
jobs:
pkg-size-report:
name: Package Size Report
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Package size report
uses: pkg-size/action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
display-size: uncompressed, brotli # ⬅ Comma separated list of sizes to show
```
## ⚙️ Options
### build-command
Default: `npm run build` if it exists in `package.json`, otherwise `false`.
Command to build the package and produce distribution files with. Pass in `false` to disable attempting to produce a build.
### comment-report
Default: `true`
Possible values: `true`, `false`
Whether to comment the build size report on the PR or not.
### mode
Default: `regression`
Possible values: `regression`, `head-only`
Sets the size report mode:
- `regression`: Builds both `head` and `base` branch and compares difference.
- `head-only`: Only builds and reports on `head` branch.
### display-size
Default: `uncompressed`
Possible values: `uncompressed`, `gzip`, `brotli`
Which size to show. Pass in a comma-separated list for multiple.
### unchanged-files
Default: `collapse`
Possible values: `show`, `collapse`, `hide`
Whether to show unchanged files.
### sort-by
Default: `delta`
Possible values: `delta`, `headSize`, `baseSize`, `path`
Which property to sort the files list by. `delta` is the size difference.
### sort-order
Default: `desc`
Possible values: `desc`, `asc`
Files list sort order.
### hide-files
Glob pattern to hide files. For example, if you want to hide source-maps:
```yml
hide-files: '*.{js,css}.map'
```
## 💁♀️ FAQ
### Can I use this for non-published projects?
Yes. All you need to do is specify distribution files in the `files` array in `package.json`.
### How is this different from [size-limit-action](https://github.com/marketplace/actions/size-limit-action)?
[size-limit-action](https://github.com/marketplace/actions/size-limit-action) approaches size monitoring from a budgeting standpoint, and has features such as rejecting PRs if the proposed changes are too large. It requires specifying each distribution file and doesn't show compression sizes.
**pkg-size-action** accepts that size increases can be often warranted if the feature/bug-fix is important, and approaches monitoring from a purely informational standpoint. It encourages being size conscious without blocking your changes. pkg-size-action can also automatically detect distribution files based on your `package.json` configuration.
## 💼 License
MIT © Hiroki Osame
Logo made by Freepik