Skip to content


Ability for user created subcommands #403

sindresorhus opened this Issue · 6 comments

6 participants


Just throwing it out there. Could be useful to let the community create Bower subcommands or even extend exiting ones.

Component(1) is doing it.

This could solve people's complaints about Bower being too unopinionated. They could then just create a eg RequireJS subcommand bower rjs that added installed components to their RJS config.


Was just looking through some of the component(1) examples. I like the idea of offering users a way to define subcommands, so +1.


Hmm, I feel like this is the realm of Grunt.


I agree with @desandro. :-1:
This is in the domain of grunt / brunch / assembler / (insert another build tool here).

I feel this would be misused to create 15 different bower-amd variants (among other things). Grunt already has this problem (and thus is moving to node-task).


Hmm. Not convinced by the rjs example - why bother allowing people to make bower rjs when they could already make grunt rjs or make rjs work.

The component(1) examples make slightly more sense because they are actually using the internals of the tool but you can still do this with a standalone tool that uses the bower programmatic API.

So, :-1: unless a compelling use case comes up.


I don't mean to completely throw this out. I think there is definitely something to integrate Bower better for commands. This issue has come up before - in that there wasn't an easy way to interface with Bower programmatically.


Bower 1.x.x has --json that makes it very easy for tools to integrate with. Also the programatic API was improved by a great margin.

While this looks like a good idea at first glance, it would intersect with the scope of other tools, like Grunt and would make bower more complex. We want to keep bower as low level and simple as possible.

@satazor satazor closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.