An open API service indexing awesome lists of open source software.

https://github.com/privatenumber/webpack-distsize

Track Webpack output size via version control
https://github.com/privatenumber/webpack-distsize

distribution size webpack

Last synced: 2 months ago
JSON representation

Track Webpack output size via version control

Awesome Lists containing this project

README

          

# Webpack Distsize





Track Webpack output size via version control



If you like this project, please star it & follow me to see what other cool projects I'm working on! ❀️

## ⭐️ Features
- **πŸ“Š Size conscious** Be aware of how your changes impact file size
- **πŸ’… Pretty formatting** View color-coded assets ordered by size via `npx distsize`
- **βš™οΈ Configurable** Save distsize data where you like and set custom thresholds

## πŸš€ Install
```sh
npm i -D webpack-distsize
```

## πŸ‘©β€πŸ« Easy setup

Add to your Webpack config:
```js
// 1. Import plugin
const Distsize = require('webpack-distsize');

module.exports = {
...,

plugins: [
// 2. Add to plugins array
new Distsize()
]
};
```

Run your Webpack build and track the produced `.distsize.json` file via version control.

### Distsize viewing

The plugin installs the `distsize` binary to view the outputted distsize JSON file. IT defaults to reading `.distsize.json` in the current directory, but pass in a path to read from a custom path.

```sh
npx distsize
```

## πŸŽ› Options
Configure Distisze by passing in an options object:
```js
new Distsize({
// Options
})
```

- `log` `` (default `true`) - Whether to log the distsize to stdout

- `filepath` `` (default `.distsize.json`) - Output location for distsize JSON data

- `indent` `` (default `2`) - Indentation for distsize JSON data

- `filter` `` (`null`) - Filter to include assets by name
```js
// Example filter that ignores hidden files and source-maps
filter: (asset) => !asset.startsWith('.') && !asset.endsWith('.map')
```

- `thresholds` `` - Color coding to use for size thresholds

```json5
[
{ threshold: 100000, color: 'red' },
{ threshold: 50000, color: 'orange' },
{ threshold: 10000, color: 'yellow' },
{ threshold: 5000, color: 'dodgerblue' },
{ threshold: 0, color: 'lime' },
]
```


## πŸ’β€β™€οΈ FAQ
- **Can it track and display asset growth?**

Depends on your Webpack configuration. If your assets are emitted under the same name, then yes.

But if it usses [`[hash]`, `[contenthash]`, `[chunkhash]`](https://webpack.js.org/configuration/output/#template-strings), then it's not possible to _accurately_ draw a comparison across builds.

- **Can it track size impact from dependency changes?**

If a dependency change impacts distribution size, it will be reflected by this plugin, but it will not contain any details that hint at which dependency grew in size. I recommend doing upgrades in isolation so it's easily identifiable.

Distsize focuses specifically on distribution size and making it digestible because that alone can be overwhelmingβ€”a large codebase can produce hundreds of assets.

If you want something similar for dependencies, I recommend using [webpack-dependency-size](https://github.com/privatenumber/webpack-dependency-size).

## πŸ‘¨β€πŸ‘©β€πŸ‘§ Related
- [webpack-dependency-size](https://github.com/privatenumber/webpack-dependency-size) - Analyze dependency assets bundled into your Webpack build

- [webpack-analyze-duplication-plugin](https://github.com/privatenumber/webpack-analyze-duplication-plugin) - Detect duplicated modules in your Webpack build

## πŸ’Ό License

MIT