Command Line Interface

Usage no npm install needed!

<script type="module">
  import cirrusctCli from 'https://cdn.skypack.dev/@cirrusct/cli';



npm version

Feature-rich, data-driven Node JS Command Line Interface (CLI) tool.


$ yarn add @cirrusct/cli
$ npm install @cirrusct/cli


import { Cli, CliProgramDefinition, CliRunResult } from '@cirrusct/cli';

// Define command(s)
const command: CliCommandDefinition = {
    // command name
    name: 'serve',
    description: 'Start Web Server',
    // handler called when command is executed 
    handler: parsed => {
        console.log(`Running command: ${parsed.parsedCommandName}`)
    // define positional arguments
    arguments: [
            name: 'arg1',
            description: 'First positional argument'
    // define options (specified with '--[name]' or '-[flag]')
    options: [
            name: 'logLevel',
            flag: 'l',
            description: 'Output message log level',

// Define program containing array of commands
const cliProgram: CliProgramDefinition = {
    commands: [command],
    description: 'Server',
    name: 'server',

// Start Cli to parse command line and call command handler based on Cli input
export const start = async (): Promise<CliRunResult> => {
    return Cli.start(cliProgram)


Command Definition

The CliCommandDefinition interface defines a command to be parsed from CLI input and has the following properties:

Property Type Description
name string Command Name
description string Command description
arguments Array (CliCommandDefinitionArgument) Command Arguments
options Array (CliCommandDefinitionOption) Command Options
allowDynamicOptions (Optional) Boolean Allow options to be specified on command line that are not defined as part of the definition
examples string array Usage Examples
transformOptions (options) => Options Function to transform options
handler CommandHandler Function called when command is executed
env (Optional) Hash Environment
transformArguments (arguments) => Arguments Function to transform arguments