pero
v0.3.1
Published
Route based CLI tool
Maintainers
Readme
Feature
- Route based, born to create nested CLI commands
- ESBuild driven, really fast to compile your CLI project
Quick Tour
This project is under heavy development, APIs might be changed until the stable version is released. 📍Roadmap
1. Install
npm install pero --save
# or use
yarn add pero2. Create a folder for CLI
mkdir src
cd $_
touch index.ts # or index.jsIn the example above, index.ts is created in the root of the CLI source folder src,
which is defined as the top-most command in CLI.
.
└── src
└── index.ts3. vim index.ts
Add the code and finish your first Pero app!
import { Command, Args } from 'pero'
export default (command: Command) => {
// command registration: define your command here
command
.argument('[something]', 'your-description')
.option('-e', 'environment')
// action
return (args: Args) => {
// do something with user-input args here
command.help() // print help message
}
}In Pero, we have to two steps in our runtime:
- Step1: Registration, in the outer callback we have
commandpassed as the first param, you can utilize this to define your command's arguments or options. - Step2: Action, in the inner callback we have
argspassed to, you may do something with user-input args
4. Compile and run
Pero CLI is currently under development, so you need to do the compilation yourself by adding a compiler.
Add compile.ts in the root of the whole project, and your project topography will look like this:
.
├── src
│ └── index.ts
└── compile.tsAdd some code for compilation:
import path from 'path'
import { Compiler } from 'pero'
(async () => {
const compiler = new Compiler({
outDir: path.resolve(__dirname, './dist'),
root: path.resolve(__dirname, 'src'),
name: 'name-your-cli'
})
await compiler.compile()
})()Compiled CLI will be emitted to the outDir you defined above.
Run the code below, you will get the corresponding help message in the terminal.
node ./dist/index.jsAdvanced Usage
Nested Command
With the demo project introduced in the Quick Tour section, try to add a new folder under src folder,
you will get the nested command right away! This is really cool.
.
└── src
├── build ## the sub-command we added
│ └── index.ts
└── index.tsTo trigger the sub-command build, do the compilation first and run:
node ./dist/index.js buildYou will see anything in the sub-command's action printed to the screen. Great!
📍Roadmap
This project is under heavy development, you may refer to this to get the latest update!
Acknowledgement
Special thanks to @yisar132 for the logo, it's great!
LICENSE
MIT
