CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-enquirer

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

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

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

Install with Tessl CLI

npx tessl i tessl/npm-enquirer
Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/enquirer@2.4.x
Publish Source
CLI
Badge
tessl/npm-enquirer badge