or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

core-api.mdcustom-prompts.mdform-survey-prompts.mdindex.mdselection-prompts.mdspecialized-prompts.mdtext-prompts.md
tile.json

tessl/npm-enquirer

Stylish, intuitive and user-friendly prompt system for creating interactive CLI interfaces

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/enquirer@2.4.x

To install, run

npx @tessl/cli install tessl/npm-enquirer@2.4.0

index.mddocs/

Enquirer

Enquirer 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.

Package Information

  • Package Name: enquirer
  • Package Type: npm
  • Language: JavaScript (with TypeScript definitions)
  • Installation: npm install enquirer

Core Imports

const { prompt } = require('enquirer');
const Enquirer = require('enquirer');

ES Modules:

import { prompt } from 'enquirer';
import Enquirer from 'enquirer';

Basic Usage

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']
  }
]);

Architecture

Enquirer is built around several key components:

  • Enquirer Class: Main class for creating prompt instances and managing sessions
  • Static Prompt API: Convenient static methods for quick prompting without instantiation
  • Built-in Prompts: 18+ ready-to-use prompt types for different input scenarios
  • Base Prompt Classes: Foundation classes for creating custom prompt types
  • Plugin System: Extensible architecture for adding advanced features
  • Event System: EventEmitter-based architecture for handling prompt lifecycle

Capabilities

Core Prompting API

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);
}

Core API

Text Input Prompts

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);

Text Input Prompts

Selection Prompts

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);

Selection Prompts

Form and Survey Prompts

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);

Form and Survey Prompts

Specialized Prompts

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);

Specialized Prompts

Custom Prompt Development

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;

Custom Prompt Development

Core Types

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;
}