A curated drawer of CLI and terminal building blocks for Node, grouped by the job they do.

CLI frameworks

Turn functions or arg schemas into full command-line apps.

ResourceWhy it is useful
cliiWrite functions, add JSDoc, and clii turns them into a CLI automatically.
cliss + magicliTurn a plain function into a CLI.
cleffaSimple CLI file runner: cleffa ./file.
cmd-tsType-driven argument parser for TypeScript CLIs.
cacSmall library for building command-line apps.
cleyeTyped CLI argument parser.

Prompts & interactivity

ResourceWhy it is useful
@clack/promptsPolished, interactive prompt components.
omeletteShell autocomplete for your CLI.
clui (demo)Interactive command autocomplete UI.
qnm fuzzy-searchFuzzy search implementation worth borrowing.

Spinners & task output

ResourceWhy it is useful
tasukuBeautiful task output, ora-like.
mico-spinnerTiny spinner alternative to ora.
@topcli/spinnerMultiple concurrent spinners.
listrRun tasks in a list with status output.
tasktreeTaskr-style nested task logs.
progress.jsLoading / progress display.

Logging & console output

ResourceWhy it is useful
consolaNice, configurable console output.
log-updateUpdate log output in place.
updatable-logUpdatable and clearable logging.
cli-truncateTruncate strings to terminal width.
loggerCustomizable logging.
pretty-print-errorFormat errors as nice colored strings.
mietteRust-miette-style underlined diagnostic output.

Colors & text styling

ResourceWhy it is useful
gradient-stringPretty gradient text.
concolorConsole colors via template-tag variable names.
figlet.jsLarge ASCII-art text banners.
sisteransiLow-level ANSI escape-code helpers.
isansiVerify whether output contains ANSI color.

Layout & TUI

ResourceWhy it is useful
react-blessed / neo-blessedReact renderer for blessed terminal UIs.
table-layoutRender tabular terminal layouts.
columnifyFormat data into aligned columns.
ink-tableTable component for Ink-based CLIs.
terminal-imgDraw images directly in the terminal.
ResourceWhy it is useful
terminal-linkCreate clickable hyperlinks in the terminal.
launch-editorOpen files in the user's editor.
node-copy-pasteRead and write the system clipboard.

Environment & ports

ResourceWhy it is useful
std-envDetect runtime environment (CI, platform, etc.).
get-port-pleaseFind an available port.
port-scannerScan ports.

Process lifecycle & recording

ResourceWhy it is useful
graceful-goodbye / when-exitRun cleanup handlers on graceful exit.
user-startupAuto-start commands on login, cross-platform.
svg-term-cliRecord terminal output to SVG.

Testing

ResourceWhy it is useful
cli-testing-libraryTest CLI apps with a Testing-Library-style API.