bundlewatch
Version:
Keep watch of your bundle size
142 lines (98 loc) • 5.14 kB
Markdown
<div align="center">
<a href="https://bundlewatch.io">
<img src="https://cdn.rawgit.com/bundlewatch/bundlewatch.io/master/docs/_assets/logo-large.svg" width="600px">
</a>
<br>
<br>
Keep watch of your bundle size.
[](https://www.npmjs.org/package/bundlewatch)
[](https://www.npmjs.org/package/bundlewatch)
[](https://coveralls.io/github/bundlewatch/bundlewatch?branch=master)
[](https://github.com/bundlewatch/bundlewatch/blob/master/LICENSE)
</div>
<hr />
BundleWatch checks file sizes, ensuring bundled browser assets don't jump in file size.
Sharp increases in BundleWatch can signal that something is wrong, such as adding a package that bloats the slug, an incorrect import, or forgetting to minify.
Inspired by [Siddharth Kshetrapal's `bundlesize`][bundlesize]
## Getting Started
Install the BundleWatch package:
```sh
npm install bundlewatch --save-dev
```
Add some basic configuration to your `package.json`
```json
{
"name": "my package name",
"version": "0.0.1",
"bundlewatch": {
"files": [
{
"path": "myfolder/*.js",
"maxSize": "100kB"
}
]
}
}
```
> [!NOTE]
> You can also use a `bundlewatch.config.js` file instead of the `package.json` field. See the [documentation][bundlewatch-docs-url] for more details.
### Usage
```sh
npm run bundlewatch
```
This will give you command line output. If you want BundleWatch to report build status on your pull requests, see below.
## Adding Build Status
BundleWatch can report its status on your GitHub Pull Requests.
<div align="center">
<img alt="build status preview" src="https://raw.githubusercontent.com/bundlewatch/bundlewatch.io/master/docs/_assets/build-status-preview.png" width="700px">
</div>
### CI Auth Variables Needed by BundleWatch
- `BUNDLEWATCH_GITHUB_TOKEN`
You will need to give BundleWatch access to your GitHub Statuses, which can be done by heading to:
[https://service.bundlewatch.io/setup-github][setup-github-url]
This will give you your `BUNDLEWATCH_GITHUB_TOKEN`. You will need to set this as an environment variable in CI.
### CI Variables Needed by BundleWatch
The most efficient way to get this running is to ensure that some environment variables are available for BundleWatch to find.
- `CI_REPO_OWNER` github.com/**facebook**/react
- `CI_REPO_NAME` github.com/facebook/**react**
- `CI_COMMIT_SHA`
- `CI_BRANCH`
If you're using, _Travis_, _CircleCI_, _Wrecker_, _Drone_ or _GitHub Actions_ these should all work out of the box.
> [!TIP]
> Have a look at the source code to see which variables are automatically found: [`getCIVars`][get-ci-vars-source]
### Viewing the results breakdown
After setting up the above you will have BuildStatus on your Pull Requests. Clicking the _details_ link on the reported status will show you a results file breakdown.
<div align="center">
<img alt="build results preview" src="https://raw.githubusercontent.com/bundlewatch/bundlewatch.io/master/docs/_assets/build-results-preview.png" width="700px">
</div>
---
## Additional Documentation
Full [documentation available on bundlewatch.io][bundlewatch-docs-url]
### I use bundlesize, why should I switch to BundleWatch
- Bundlesize has entered maintenance mode and pull requests are left hanging, so we wanted to reboot the community through creating BundleWatch
- New [BundleWatch service][bundlewatch-service] with infrastructure as code
- Launched [bundlewatch.io documentation website][bundlewatch-docs-url]
- Enough test coverage to support CD
- Node API Support
- Lower barrier to contributing (automated testing and publishing), build a trusted community of contributors to have continuous improvement
### Additional Features
- [x] Config validation to stop users from guessing why BundleWatch won't work
- [x] Support for config file path
- [x] Better results breakdown page
- [x] Better comparisons between branches, support branches other than master
- [x] Support for your own server for storing data
- [x] New and improved CI behaviour
- [ ] Show history of BundleWatchs over time
### Contributors
<a href="https://github.com/bundlewatch/bundlewatch/graphs/contributors">
<img src="https://contrib.rocks/image?repo=bundlewatch/bundlewatch" />
</a>
### Want to Help? Become a Contributor
Contributions of any kind are welcome!
[See the Contributing docs][contrib-docs-url].
[bundlesize]: https://github.com/siddharthkp/bundlesize
[bundlewatch-docs-url]: https://bundlewatch.io/
[bundlewatch-service]: https://github.com/bundlewatch/service
[contrib-docs-url]: https://github.com/bundlewatch/bundlewatch/blob/master/CONTRIBUTING.md
[get-ci-vars-source]: https://github.com/bundlewatch/bundlewatch/blob/master/src/app/config/getCIVars.js
[setup-github-url]: https://service.bundlewatch.io/setup-github