CLI frameworks (overview)

This page lists common Node.js CLI frameworks so you can see where terminal-gui-prompts can plug in. The library provides adapters that match these frameworks’ prompt APIs while using GUI promotion and terminal echo.

Argument parsing (commands & options)

Framework

Role

Notes

Commander

Define commands, options, help

Very popular; no built-in prompts

Yargs

Same

Pirate-themed; plugins for prompts

Oclif (Heroku)

Commands, flags, plugins

Used by Heroku CLI, Twilio

Glow / Caporal

Lightweight command defs

Less common

These focus on parsing process.argv and defining commands. They don’t handle “type y/n” or “enter a value” by default; many CLIs add a prompt library for that.

Interactive prompt libraries

Framework

Role

Notes

@inquirer/prompts

Confirm, input, select, etc.

Modern Inquirer rewrite; modular

Inquirer (legacy)

Same

Still widely used; maintainers suggest migrating to @inquirer/prompts

Enquirer

Confirm, input, select, forms

Fast; used by Yeoman, many tools

prompts

Minimal prompt set

Small API

Vorpal

REPL + prompts

Less active

These are where “confirm” and “input” live. terminal-gui-prompts can replace or wrap their confirm/input so that, when possible, the same API shows a Windows dialog and still echoes the question to the terminal.

Hybrid (parsing + prompts)

Framework

Role

Notes

yargs-interactive

Yargs + Inquirer-style prompts

Prompts for missing options

interactive-commander

Commander + Inquirer

Same idea for Commander

These combine a parser with a prompt library. Our adapters target the prompt side (e.g. the Inquirer/prompts API they use under the hood).

Where we plug in

terminal-gui-prompts provides:

  • A generic API: confirm(), prompt(), etc., for any CLI.

  • Adapters that match a framework’s prompt API so you can swap the implementation:

    • @inquirer/prompts-style confirm/input

    • enquirer-style confirm/input

    • (Others as needed)

You keep your existing CLI structure and only change where you get confirm / input from; the rest of the framework (Commander, Yargs, etc.) is unchanged.