Inquirer.js

Interactive command-line prompts for Node.js — lists, checkboxes, confirms, and more with a single async API.

Library
npm
v14.2.1
21,624stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
90/100Excellent
Development Activity96
Maintenance96
Community68
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
87/100Excellent
Architecture85
Code Quality88
Innovation85
Learning Curve90

Inquirer.js is the collection of interactive command-line user interfaces most Node.js CLI tools reach for first. A single inquirer.prompt() call takes an array (or map, or RxJS observable) of question objects and resolves an answers hash, handling validation, defaults, conditional branching (when), and terminal rendering along the way.

The project has shipped since 2013 and now sits at 50M+ weekly npm downloads, making it one of the most battle-tested pieces of CLI infrastructure in the JavaScript ecosystem. Tools like Yeoman, npm init flows, and countless scaffolding CLIs are built on top of it.

The modern codebase is a monorepo of @inquirer/* scoped packages (core, prompts, checkbox, confirm, select, input, editor, search, ansi, type) with the inquirer package itself acting as a thin, backward-compatible wrapper around them — so existing inquirer.prompt() call sites keep working while the underlying primitives can be composed directly via @inquirer/prompts for new code.

What You Get

  • A prompt() function that accepts an array, a map, or an RxJS-compatible observable of question objects and returns a promise of the collected answers
  • Built-in prompt types (list, rawlist, expand, checkbox, confirm, input, number, password, editor) covering the vast majority of CLI input needs out of the box
  • Conditional flow control via a when function/boolean per question, plus per-question validate, filter, and transformer hooks that can run sync or async
  • A createPromptModule() escape hatch for isolated prompt registries, and registerPrompt() for adding custom/community prompt types
  • A reactive interface — passing an RxJS Subject of questions lets a CLI push new questions dynamically as earlier answers resolve

Common Use Cases

  • Project scaffolding CLIs that ask a sequence of setup questions (name, template, package manager) before generating files
  • Interactive git-style or npm-style command wrappers that confirm destructive actions before running them
  • Multi-step onboarding flows where later questions are conditionally shown based on earlier answers via when
  • Build tools and generators (in the Yeoman lineage) that need password/editor/checkbox prompts alongside plain text input

Under The Hood

Architecture The inquirer package (packages/inquirer/src/index.tsui/prompt.ts) is a compatibility shim over the newer @inquirer/core primitives: PromptsRunner.run() iterates an async generator of questions (getQuestions), resolves each one’s message/default/choices (which may be async functions) via fetchAsyncQuestionProperty, decides whether to ask it via shouldRun (respecting when and previously-answered values), and dispatches to either a modern PromptFn or a legacy class-based LegacyPromptConstructor detected through duck-typing (isPromptConstructor). Underneath, @inquirer/core’s createPrompt() (packages/core/src/lib/create-prompt.ts) wires a React-like hooks engine (hook-engine.ts, backed by AsyncLocalStorage rather than a VDOM) to a ScreenManager that mutes stdout via mute-stream and re-renders only on state change, with useKeypress/useEffect-style primitives driving the terminal UI. This hooks-over-readline design is the core abstraction the whole prompt catalogue is built from — changing it would ripple through every @inquirer/* prompt package.

Tech Stack A Yarn (v4) + Turborepo workspace of TypeScript-first ESM packages (packages/*), targeting current Node.js LTS ranges, with @inquirer/core handling readline/terminal concerns, mute-stream for output muting during editing, run-async for callback/promise interop on legacy validate/filter functions, and optional rxjs support for the observable-based prompt session API. Builds run through tsc orchestrated by turbo, tests via vitest, and linting via oxlint/oxfmt plus eslint.

Code Quality The inquirer package carries an extensive public-API test suite (inquirer.test.ts, well over a thousand lines) covering question maps, arrays, observables, validation/filter/when timing, and TTY edge cases, run under vitest. CI (main.yml) gates on tsc, oxlint, oxfmt --check, and eslint before tests, with a separate CodeQL workflow and a zizmor job specifically linting the GitHub Actions workflows themselves for supply-chain issues — a level of CI rigor above most CLI libraries of this age.

API Design The headline API is a single inquirer.prompt(questions) call returning a plain answers object, which is about as low-boilerplate as an interactive CLI API gets. Question objects follow one consistent shape (type, name, message, default, choices, validate, filter, when) across every prompt type, and the README documents each field and prompt type with runnable examples in packages/inquirer/examples/. The main tension is that this package now explicitly documents itself as the legacy/back-compat layer, steering new adoption toward the more ergonomic per-prompt @inquirer/prompts functions.

Used by 29 apps in this directory

TypeScript
99%
Other

Activepieces

Automation · AI Assistants

24,298

Open-source AI automation platform that converts 280+ workflow integrations into MCP servers for LLMs, with no-code builders and TypeScript extensibility.

View details
92
Repo Health
85
Technical
64
Dependency
Built with
TypeScript99%
Updated today
TypeScript
87%
Other

AFFiNE

Productivity · Project Management · Note Taking

72,238

Write, draw, and plan in one infinite canvas — the open-source alternative to Notion and Miro that keeps your data yours.

View details
91
Repo Health
87
Technical
67
Dependency
Built with
TypeScript87%
Updated yesterday
TypeScript
69%
Other

Budibase

Low Code Platforms · No Code Platforms

28,260

Build AI agents, automations, and internal apps on a single open-source platform with full self-hosting control.

View details
91
Repo Health
81
Technical
63
Dependency
Built with
TypeScript69%
Svelte26%
Updated 2 days ago
Svelte
46%
MIT

Cryptgeon

File Storage · Security

1,517

Self-destructing encrypted notes and files that vanish after viewing — the server never sees your keys.

View details
75
Repo Health
80
Technical
74
Dependency
Built with
Svelte46%
TypeScript30%
Rust14%
Updated yesterday
TypeScript
81%
Other

Directus

CMS · Low Code Platforms

37,783

Connect any SQL database and get instant REST and GraphQL APIs, a visual management Studio, and a native MCP server for AI agents — free for most organizations.

View details
92
Repo Health
82
Technical
76
Dependency
Built with
TypeScript81%
Vue18%
Updated 3 days ago
TypeScript
75%
Apache 2.0

Fern

Developer Tools

3,772

Fern turns a single OpenAPI, AsyncAPI, or Protobuf definition into type-safe SDKs for nine languages and a hosted API documentation site, all from one CLI and one source of truth.

View details
90
Repo Health
86
Technical
66
Dependency
Built with
TypeScript75%
Updated yesterday
JavaScript
47%
MIT

Ghost

CMS · Blogging

55,191

Open source headless Node.js CMS for professional publishing, paid memberships, and newsletters with a fully owned audience.

View details
96
Repo Health
85
Technical
67
Dependency
Built with
JavaScript47%
TypeScript47%
Updated yesterday
TypeScript
57%
MIT

Jitsu

Data Engineering

5,063

Open-source, fully-scriptable data ingestion engine that streams events from web, apps, and APIs to any data warehouse in real time.

View details
88
Repo Health
79
Technical
66
Dependency
Built with
TypeScript57%
Go41%
Updated 3 days ago
TypeScript
98%
Other

Kibana

Analytics · Monitoring

21,284

Your open source window into the Elastic Stack — query, visualize, and act on data stored in Elasticsearch with real-time dashboards, AI-assisted search, and automated alerting.

View details
98
Repo Health
87
Technical
66
Dependency
Built with
TypeScript98%
Updated yesterday

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search