caolan / caolan/highland

Consider splitting the package out across multiple packages / modules

Open
#3 24 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.