Stylish, intuitive and user-friendly prompt system for creating interactive CLI interfaces
npx @tessl/cli install tessl/npm-enquirer@2.4.0Enquirer is a stylish, intuitive and user-friendly prompt system for creating interactive CLI interfaces. It provides fast, lightweight prompting capabilities with extensive customization options and built-in support for 18+ different prompt types including input, select, multiselect, form, survey, and more.
npm install enquirerconst { prompt } = require('enquirer');
const Enquirer = require('enquirer');ES Modules:
import { prompt } from 'enquirer';
import Enquirer from 'enquirer';const { prompt } = require('enquirer');
// Single prompt
const response = await prompt({
type: 'input',
name: 'username',
message: 'What is your username?'
});
// Multiple prompts
const responses = await prompt([
{
type: 'input',
name: 'name',
message: 'What is your name?'
},
{
type: 'select',
name: 'color',
message: 'Pick a color',
choices: ['red', 'green', 'blue']
}
]);Enquirer is built around several key components:
Primary interface for running prompts and collecting user input. Supports both static and instance-based usage patterns.
// Static prompt function
function prompt(questions, options);
// Enquirer class
class Enquirer extends EventEmitter {
constructor(options, answers);
prompt(questions);
register(type, fn);
use(plugin);
}Prompts for collecting text-based user input including basic input, passwords, multiline text, and invisible input.
// Basic input prompt
function input(options);
// Password prompt (hidden input)
function password(options);
// Invisible prompt (completely hidden)
function invisible(options);
// Multiline text prompt
function text(options);Interactive selection prompts including single choice, multiple choice, autocomplete, and sortable lists.
// Single selection
function select(options);
// Multiple selection
function multiselect(options);
// Autocomplete/typeahead
function autocomplete(options);
// Sortable list
function sort(options);Complex data collection prompts for gathering structured information through forms and surveys.
// Form prompt for multiple fields
function form(options);
// Survey prompt with questions
function survey(options);
// Scale/rating prompt
function scale(options);Unique prompt types for specific use cases including confirmations, authentication, code snippets, and quizzes.
// Yes/no confirmation
function confirm(options);
// Basic authentication
function basicauth(options);
// Code snippet template
function snippet(options);
// Quiz/trivia prompt
function quiz(options);Base classes and utilities for creating custom prompt types that integrate seamlessly with the Enquirer ecosystem.
// Base prompt classes
class ArrayPrompt extends Prompt;
class StringPrompt extends Prompt;
class BooleanPrompt extends Prompt;
class NumberPrompt extends Prompt;
class AuthPrompt extends Prompt;interface BasePromptOptions {
name: string | (() => string);
type: string | (() => string);
message: string | (() => string) | (() => Promise<string>);
prefix?: string;
initial?: any;
required?: boolean;
enabled?: boolean | string;
disabled?: boolean | string;
format?(value: string): string | Promise<string>;
result?(value: string): string | Promise<string>;
skip?: ((state: object) => boolean | Promise<boolean>) | boolean;
validate?(value: string): boolean | string | Promise<boolean | string>;
onSubmit?(name: string, value: any, prompt: Prompt): boolean | Promise<boolean>;
onCancel?(name: string, value: any, prompt: Prompt): boolean | Promise<boolean>;
stdin?: NodeJS.ReadStream;
stdout?: NodeJS.WriteStream;
}
interface Choice {
name: string;
message?: string;
value?: unknown;
hint?: string;
role?: string;
enabled?: boolean;
disabled?: boolean | string;
}