Consider splitting the package out across multiple packages / modules
- Dominant language
- JavaScript
- Stars
- 3.4k
- Forks
- 145
- PR merge metrics
- No merged PRs in 30d
Description
Both `async` and `underscore` currently suffer from being a "kitchensink" of anything possibly uesful, these modules didn't start out that way but more and more stuff was added to it.
Projects like [`lodash`](https://github.com/lodash/lodash) or [`underbar`](https://github.com/Matt-Esch/underbar) have mitigated against this effect by splitting the module out across multiple modules / packages. @jdalton & @Matt-Esch have done good work to allow usage of the functionality piece by piece.
This allows consumers of the module to use a tighter subset of the functionality.
@gozala also had a similar approach with splitting out [`reducers`](https://github.com/gozala/reducers) and [`reducible`](https://github.com/Gozala/reducible) and then a set of optional functions all over npm like [`buffer-reduce`](https://github.com/Gozala/buffer-reduce) , [`tree-reduce`](https://github.com/Gozala/tree-reduce) , [`dom-reduce`](https://github.com/Gozala/dom-reduce) and others.
There probably is still value in having a module that combines everything together in a "kitchensink" for people that prefer that just like `lodash` allows you to get it all or get the functions one by one.
Contributor guide
Assessment
This issue has not been assessed yet.