Every time I start a new project, I have a routine. I open up a previous project and copy over a bunch of dotfiles, the package.json and webpack.config.js , and proceed to modify them to my needs.

I don’t necessarily need anything too fancy. Most of the time all I need is a transpiler, a linter and some way to import my styles. Sometimes I might even need to have some images or fonts. So why is my package.json so massive when I’ve only been on this project for 5 minutes?

Surely this can’t be right… right?

Your personal use case might not include packages like babel-plugin-transform-runtime and babel-preset-stage-0 , or Airbnb’s extensive ESLint config to do your job, but this is still far from an exaggeration. Things can get very untidy, very fast. And that’s without even adding any framework-specific dependencies — this is just tooling!

There’s a reason why developers are intimidated by webpack configuration, and it’s not just the sheer amount of dependencies involved. Setting up webpack from scratch, while perhaps initially fun, can quickly turn into a full-time job of its own until you get everything working exactly as desired.

Furthermore, many of these dependencies have an army of peerDependencies that they require to be installed in order to work correctly. If we take a look at npmdiscover.com we can easily identify which of these dependencies are often used alongside one another. Wouldn’t it be neat if you only had to install one package?