cvx is a small library to help you create your own distributed command-line interfaces!
Distributed means that none of the commands are in a central place, instead
they are executed directly from the npm registry, using a little tool called npx.
This means that your commands are always extendable, and Very Fast.
For example, it is extremely easy to build a tool similar to Yeoman. You'd use it like this:
cvx, you would just need to publish a npm package called generator-my-template
that exposes a binary of the same name, and that would be it! No more setup would
You need Node.js 7.6 or higher.
npm install cvx
Let's quickly implement the Yeoman example from above:
const cvx =// this is our main function!// it's an async function because it implicitly returns a promise. don't// think too much about it, it's not important right now
Now, if you run:
node example.js my-template# or, had we set it up as an executable:./example.js my-template
This will automatically download and execute
generator-my-template from npm.
Constructs a command. This function takes another function that basically 'describes' how the whole thing behaves when it's executed. It looks a bit like this:
The inner function takes a
cmd parameter. This object basically keeps all of
the state. The function needs to return
cmd, wrapped in a promise. Thankfully,
this is made easy by just prefixing the function with
async, which automatically
makes it return a promise.
Configures the command. If
conf is blank, uses the default config:
- prefix: What the npm package lookup is prefixed by. Default:
- args: The command line arguments. Required.
Registers a hook to run before the main command is run. The inner function takes
cmd state as a parameter, and can modify it. Needs to return
cmd.pre, but runs after command execution.
- Olivia Hugger <firstname.lastname@example.org>
Code of Conduct
MIT (see LICENSE document)