Plugin systems are hard to get right and hard to find the right balance.
I was recently poking through Webpack's [tapable](https://github.com/webpack/tapable) which allows pretty immense customization albeit it's a little complex.
What is the best you've come across?