Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Stylish, intuitive and user-friendly prompts. Used by eslint, webpack, yarn, pm2, pnpm, RedwoodJS, FactorJS, salesforce, Cypress, Google Lighthouse, Generate, tencent cloudbase, lint-staged, gluegun, hygen, hardhat, AWS Amplify, GitHub Actions Toolkit, @airbnb/nimbus, and more! Please follow Enquirer's author:https://github.com/jonschlinkert

License

NotificationsYou must be signed in to change notification settings

enquirer/enquirer

Repository files navigation

versiondownloads



Stylish CLI prompts that are user-friendly, intuitive and easy to create.
>_ Prompts should be more like conversations than inquisitions▌


(Example shows Enquirer'sSurvey Prompt)Enquirer Survey Prompt
The terminal in all examples isHyper, theme ishyper-monokai-extended.

See more prompt examples



Created byjonschlinkert anddoowb, Enquirer is fast, easy to use, and lightweight enough for small projects, while also being powerful and customizable enough for the most advanced use cases.

  • Fast -Loads in ~4ms (that's about3-4 times faster than asingle frame of a HD movie at 60fps)
  • Lightweight - Only one dependency, the excellentansi-colors byBrian Woodward.
  • Easy to implement - Uses promises and async/await and sensible defaults to make prompts easy to create and implement.
  • Easy to use - Thrill your users with a better experience! Navigating around input and choices is a breeze. You can even createquizzes, orrecord andplayback key bindings to aid with tutorials and videos.
  • Intuitive - Keypress combos are available to simplify usage.
  • Flexible - All prompts can be used standalone or chained together.
  • Stylish - Easily override semantic styles and symbols for any part of the prompt.
  • Extensible - Easily create and usecustom prompts by extending Enquirer's built-inprompts.
  • Pluggable - Add advanced features to Enquirer using plugins.
  • Validation - Optionally validate user input with any prompt.
  • Well tested - All prompts are well-tested, and tests are easy to create without having to use brittle, hacky solutions to spy on prompts or "inject" values.
  • Examples - There are numerousexamples available to help you get started.

If you like Enquirer, please consider starring or tweeting about this project to show your support. Thanks!


>_ Ready to start making prompts your users will love? ▌
Enquirer Select Prompt with heartbeat example



❯ Getting started

Get started with Enquirer, the most powerful and easy-to-use Node.js library for creating interactive CLI prompts.


❯ Install

Install withnpm:

npm install enquirer --save

Install withyarn:

yarn add enquirer

Install Enquirer with NPM

(Requires Node.js 8.6 or higher. Please let us know if you need support for an earlier version by creating anissue.)


❯ Usage

Single prompt

The easiest way to get started with enquirer is to pass aquestion object to theprompt method.

const{ prompt}=require('enquirer');constresponse=awaitprompt({type:'input',name:'username',message:'What is your username?'});console.log(response);// { username: 'jonschlinkert' }

(Examples withawait need to be run inside anasync function)

Multiple prompts

Pass an array of"question" objects to run a series of prompts.

constresponse=awaitprompt([{type:'input',name:'name',message:'What is your name?'},{type:'input',name:'username',message:'What is your username?'}]);console.log(response);// { name: 'Edward Chan', username: 'edwardmchan' }

Different ways to run enquirer

1. By importing the specificbuilt-in prompt

const{ Confirm}=require('enquirer');constprompt=newConfirm({name:'question',message:'Did you like enquirer?'});prompt.run().then(answer=>console.log('Answer:',answer));

2. By passing the options toprompt

const{ prompt}=require('enquirer');prompt({type:'confirm',name:'question',message:'Did you like enquirer?'}).then(answer=>console.log('Answer:',answer));

Jump to:Getting Started ·Prompts ·Options ·Key Bindings


❯ Enquirer

Enquirer is a prompt runner

Add Enquirer to your JavaScript project with following line of code.

constEnquirer=require('enquirer');

The main export of this library is theEnquirer class, which has methods and features designed to simplify running prompts.

const{ prompt}=require('enquirer');constquestions=[{type:'input',name:'username',message:'What is your username?'},{type:'password',name:'password',message:'What is your password?'}];constanswers=awaitprompt(questions);console.log(answers);

Prompts control how values are rendered and returned

Each individual prompt is a class with special features and functionality for rendering the types of values you want to show users in the terminal, and subsequently returning the types of values you need to use in your application.

How can I customize prompts?

Below in this guide you will find information about creatingcustom prompts. For now, we'll focus on how to customize an existing prompt.

All of the individualprompt classes in this library are exposed as static properties on Enquirer. This allows them to be used directly without usingenquirer.prompt().

Use this approach if you need to modify a prompt instance, or listen for events on the prompt.

Example

const{ Input}=require('enquirer');constprompt=newInput({name:'username',message:'What is your username?'});prompt.run().then(answer=>console.log('Username:',answer)).catch(console.error);

Create an instance ofEnquirer.

Params

  • options{Object}: (optional) Options to use with all prompts.
  • answers{Object}: (optional) Answers object to initialize with.

Example

constEnquirer=require('enquirer');constenquirer=newEnquirer();

Register a custom prompt type.

Params

  • type{String}
  • fn{Function|Prompt}:Prompt class, or a function that returns aPrompt class.
  • returns{Object}: Returns the Enquirer instance

Example

constEnquirer=require('enquirer');constenquirer=newEnquirer();enquirer.register('customType',require('./custom-prompt'));

Prompt function that takes a "question" object or array of question objects, and returns an object with responses from the user.

Params

  • questions{Array|Object}: Options objects for one or more prompts to run.
  • returns{Promise}: Promise that returns an "answers" object with the user's responses.

Example

constEnquirer=require('enquirer');constenquirer=newEnquirer();constresponse=awaitenquirer.prompt({type:'input',name:'username',message:'What is your username?'});console.log(response);

Use an enquirer plugin.

Params

  • plugin{Function}: Plugin function that takes an instance of Enquirer.
  • returns{Object}: Returns the Enquirer instance.

Example

constEnquirer=require('enquirer');constenquirer=newEnquirer();constplugin=enquirer=>{// do stuff to enquire instance};enquirer.use(plugin);

Prompt function that takes a "question" object or array of question objects, and returns an object with responses from the user.

Params

  • questions{Array|Object}: Options objects for one or more prompts to run.
  • returns{Promise}: Promise that returns an "answers" object with the user's responses.

Example

const{ prompt}=require('enquirer');constresponse=awaitprompt({type:'input',name:'username',message:'What is your username?'});console.log(response);

❯ Prompts

This section is about Enquirer's prompts: what they look like, how they work, how to run them, available options, and how to customize the prompts or create your own prompt concept.

Getting started with Enquirer's prompts

Prompt

The basePrompt class is used to create all other prompts.

const{ Prompt}=require('enquirer');classMyCustomPromptextendsPrompt{}

See the documentation forcreating custom prompts to learn more about how this works.

Prompt Options

Each prompt takes an options object (aka "question" object), that implements the following interface:

{// requiredtype:string|function,name:string|function,message:string|function|asyncfunction,// optionalskip:boolean|function|asyncfunction,initial:string|function|asyncfunction,format:function|asyncfunction,result:function|asyncfunction,validate:function|asyncfunction,}

Each property of the options object is described below:

PropertyRequired?TypeDescription
typeyesstring|functionEnquirer uses this value to determine the type of prompt to run, but it's optional when prompts are run directly.
nameyesstring|functionUsed as the key for the answer on the returned values (answers) object.
messageyesstring|functionThe message to display when the prompt is rendered in the terminal.
skipnoboolean|functionIftrue it will not ask that prompt.
initialnostring|functionThe default value to return if the user does not supply a value.
formatnofunctionFunction to format user input in the terminal.
resultnofunctionFunction to format the final submitted value before it's returned.
validatenofunctionFunction to validate the submitted value before it's returned. This function may return a boolean or a string. If a string is returned it will be used as the validation error message.

Example usage

const{ prompt}=require('enquirer');constquestion={type:'input',name:'username',message:'What is your username?'};prompt(question).then(answer=>console.log('Answer:',answer)).catch(console.error);

Built-in prompts

AutoComplete Prompt

Prompt that auto-completes as the user types, and returns the selected value as a string.

Enquirer AutoComplete Prompt

Example Usage

const{ AutoComplete}=require('enquirer');constprompt=newAutoComplete({name:'flavor',message:'Pick your favorite flavor',limit:10,initial:2,choices:['Almond','Apple','Banana','Blackberry','Blueberry','Cherry','Chocolate','Cinnamon','Coconut','Cranberry','Grape','Nougat','Orange','Pear','Pineapple','Raspberry','Strawberry','Vanilla','Watermelon','Wintergreen']});prompt.run().then(answer=>console.log('Answer:',answer)).catch(console.error);

AutoComplete Options

OptionTypeDefaultDescription
highlightfunctiondim version of primary styleThe color to use when "highlighting" characters in the list that match user input.
multiplebooleanfalseAllow multiple choices to be selected.
suggestfunctionGreedy match, returns choices wherechoice.message contains the input string.Function that filters choices. Takes user input and a choices array, and returns a list of matching choices.
initialnumber0Preselected item in the list of choices.
footerfunctionNoneFunction that displaysfooter text

Related prompts

↑ back to:Getting Started ·Prompts


BasicAuth Prompt

Prompt that asks for username and password to authenticate the user. The default implementation ofauthenticate function inBasicAuth prompt is to compare the username and password with the values supplied while running the prompt. The implementer is expected to override theauthenticate function with a custom logic such as making an API request to a server to authenticate the username and password entered and expect a token back.

Enquirer BasicAuth Prompt

Example Usage

const{ BasicAuth}=require('enquirer');constprompt=newBasicAuth({name:'password',message:'Please enter your password',username:'rajat-sr',password:'123',showPassword:true});prompt.run().then(answer=>console.log('Answer:',answer)).catch(console.error);

↑ back to:Getting Started ·Prompts


Confirm Prompt

Prompt that returnstrue orfalse.

Enquirer Confirm Prompt

Example Usage

const{ Confirm}=require('enquirer');constprompt=newConfirm({name:'question',message:'Want to answer?'});prompt.run().then(answer=>console.log('Answer:',answer)).catch(console.error);

Related prompts

↑ back to:Getting Started ·Prompts


Form Prompt

Prompt that allows the user to enter and submit multiple values on a single terminal screen.

Enquirer Form Prompt

Example Usage

const{ Form}=require('enquirer');constprompt=newForm({name:'user',message:'Please provide the following information:',choices:[{name:'firstname',message:'First Name',initial:'Jon'},{name:'lastname',message:'Last Name',initial:'Schlinkert'},{name:'username',message:'GitHub username',initial:'jonschlinkert'}]});prompt.run().then(value=>console.log('Answer:',value)).catch(console.error);

Related prompts

↑ back to:Getting Started ·Prompts


Input Prompt

Prompt that takes user input and returns a string.

Enquirer Input Prompt

Example Usage

const{ Input}=require('enquirer');constprompt=newInput({message:'What is your username?',initial:'jonschlinkert'});prompt.run().then(answer=>console.log('Answer:',answer)).catch(console.log);

You can usedata-store to storeinput history that the user can cycle through (seesource).

Related prompts

↑ back to:Getting Started ·Prompts


Invisible Prompt

Prompt that takes user input, hides it from the terminal, and returns a string.

Enquirer Invisible Prompt

Example Usage

const{ Invisible}=require('enquirer');constprompt=newInvisible({name:'secret',message:'What is your secret?'});prompt.run().then(answer=>console.log('Answer:',{secret:answer})).catch(console.error);

Related prompts

↑ back to:Getting Started ·Prompts


List Prompt

Prompt that returns a list of values, created by splitting the user input. The default split character is, with optional trailing whitespace.

Enquirer List Prompt

Example Usage

const{ List}=require('enquirer');constprompt=newList({name:'keywords',message:'Type comma-separated keywords'});prompt.run().then(answer=>console.log('Answer:',answer)).catch(console.error);

Related prompts

↑ back to:Getting Started ·Prompts


MultiSelect Prompt

Prompt that allows the user to select multiple items from a list of options.

Enquirer MultiSelect Prompt

Example Usage

const{ MultiSelect}=require('enquirer');constprompt=newMultiSelect({name:'value',message:'Pick your favorite colors',limit:7,choices:[{name:'aqua',value:'#00ffff'},{name:'black',value:'#000000'},{name:'blue',value:'#0000ff'},{name:'fuchsia',value:'#ff00ff'},{name:'gray',value:'#808080'},{name:'green',value:'#008000'},{name:'lime',value:'#00ff00'},{name:'maroon',value:'#800000'},{name:'navy',value:'#000080'},{name:'olive',value:'#808000'},{name:'purple',value:'#800080'},{name:'red',value:'#ff0000'},{name:'silver',value:'#c0c0c0'},{name:'teal',value:'#008080'},{name:'white',value:'#ffffff'},{name:'yellow',value:'#ffff00'}]});prompt.run().then(answer=>console.log('Answer:',answer)).catch(console.error);// Answer: ['aqua', 'blue', 'fuchsia']

Example key-value pairs

Optionally, pass aresult function and use the.map method to return an object of key-value pairs of the selected names and values:example

const{ MultiSelect}=require('enquirer');constprompt=newMultiSelect({name:'value',message:'Pick your favorite colors',limit:7,choices:[{name:'aqua',value:'#00ffff'},{name:'black',value:'#000000'},{name:'blue',value:'#0000ff'},{name:'fuchsia',value:'#ff00ff'},{name:'gray',value:'#808080'},{name:'green',value:'#008000'},{name:'lime',value:'#00ff00'},{name:'maroon',value:'#800000'},{name:'navy',value:'#000080'},{name:'olive',value:'#808000'},{name:'purple',value:'#800080'},{name:'red',value:'#ff0000'},{name:'silver',value:'#c0c0c0'},{name:'teal',value:'#008080'},{name:'white',value:'#ffffff'},{name:'yellow',value:'#ffff00'}],result(names){returnthis.map(names);}});prompt.run().then(answer=>console.log('Answer:',answer)).catch(console.error);// Answer: { aqua: '#00ffff', blue: '#0000ff', fuchsia: '#ff00ff' }

Example alternate labels

const{ MultiSelect}=require('enquirer');constprompt=newMultiSelect({name:'color',message:'Pick a flavor',choices:[{message:'Negative Red',name:'cyan',value:'#00ffff'},{message:'Lights Out',name:'black',value:'#000000'},{message:'The Ocean',name:'blue',value:'#0000ff'},]});prompt.run().then(answer=>console.log('Answer:',answer)).catch(console.error);

Related prompts

↑ back to:Getting Started ·Prompts


Numeral Prompt

Prompt that takes a number as input.

Enquirer Numeral Prompt

Example Usage

const{ NumberPrompt}=require('enquirer');constprompt=newNumberPrompt({name:'number',message:'Please enter a number'});prompt.run().then(answer=>console.log('Answer:',answer)).catch(console.error);

Related prompts

↑ back to:Getting Started ·Prompts


Password Prompt

Prompt that takes user input and masks it in the terminal. Also see theinvisible prompt

Enquirer Password Prompt

Example Usage

const{ Password}=require('enquirer');constprompt=newPassword({name:'password',message:'What is your password?'});prompt.run().then(answer=>console.log('Answer:',answer)).catch(console.error);

Related prompts

↑ back to:Getting Started ·Prompts


Quiz Prompt

Prompt that allows the user to play multiple-choice quiz questions.

Enquirer Quiz Prompt

Example Usage

const{ Quiz}=require('enquirer');constprompt=newQuiz({name:'countries',message:'How many countries are there in the world?',choices:['165','175','185','195','205'],correctChoice:3});prompt.run().then(answer=>{if(answer.correct){console.log('Correct!');}else{console.log(`Wrong! Correct answer is${answer.correctAnswer}`);}}).catch(console.error);

Quiz Options

OptionTypeRequiredDescription
choicesarrayYesThe list of possible answers to the quiz question.
correctChoicenumberYesIndex of the correct choice from thechoices array.

↑ back to:Getting Started ·Prompts


Survey Prompt

Prompt that allows the user to provide feedback for a list of questions.

Enquirer Survey Prompt

Example Usage

const{ Survey}=require('enquirer');constprompt=newSurvey({name:'experience',message:'Please rate your experience',scale:[{name:'1',message:'Strongly Disagree'},{name:'2',message:'Disagree'},{name:'3',message:'Neutral'},{name:'4',message:'Agree'},{name:'5',message:'Strongly Agree'}],margin:[0,0,2,1],choices:[{name:'interface',message:'The website has a friendly interface.'},{name:'navigation',message:'The website is easy to navigate.'},{name:'images',message:'The website usually has good images.'},{name:'upload',message:'The website makes it easy to upload images.'},{name:'colors',message:'The website has a pleasing color palette.'}]});prompt.run().then(value=>console.log('ANSWERS:',value)).catch(console.error);

Related prompts


Scale Prompt

A more compact version of theSurvey prompt, the Scale prompt allows the user to quickly provide feedback using aLikert Scale.

Enquirer Scale Prompt

Example Usage

const{ Scale}=require('enquirer');constprompt=newScale({name:'experience',message:'Please rate your experience',scale:[{name:'1',message:'Strongly Disagree'},{name:'2',message:'Disagree'},{name:'3',message:'Neutral'},{name:'4',message:'Agree'},{name:'5',message:'Strongly Agree'}],margin:[0,0,2,1],choices:[{name:'interface',message:'The website has a friendly interface.',initial:2},{name:'navigation',message:'The website is easy to navigate.',initial:2},{name:'images',message:'The website usually has good images.',initial:2},{name:'upload',message:'The website makes it easy to upload images.',initial:2},{name:'colors',message:'The website has a pleasing color palette.',initial:2}]});prompt.run().then(value=>console.log('ANSWERS:',value)).catch(console.error);

Related prompts

↑ back to:Getting Started ·Prompts


Select Prompt

Prompt that allows the user to select from a list of options.

Enquirer Select Prompt

Example Usage

const{ Select}=require('enquirer');constprompt=newSelect({name:'color',message:'Pick a flavor',choices:['apple','grape','watermelon','cherry','orange']});prompt.run().then(answer=>console.log('Answer:',answer)).catch(console.error);

Example key-value pairs

const{ Select}=require('enquirer');constprompt=newSelect({name:'color',message:'Pick a color',choices:[{name:'cyan',value:'#00ffff'},{name:'black',value:'#000000'},{name:'blue',value:'#0000ff'},]});prompt.run().then(answer=>console.log('Answer:',answer)).catch(console.error);

Example alternate labels

const{ Select}=require('enquirer');constprompt=newSelect({name:'color',message:'Pick a color',choices:[{message:'Negative Red',name:'cyan',value:'#00ffff'},{message:'Lights Out',name:'black',value:'#000000'},{message:'The Ocean',name:'blue',value:'#0000ff'},]});prompt.run().then(answer=>console.log('Answer:',answer)).catch(console.error);

Related prompts

↑ back to:Getting Started ·Prompts


Sort Prompt

Prompt that allows the user to sort items in a list.

Example

In thisexample, custom styling is applied to the returned values to make it easier to see what's happening.

Enquirer Sort Prompt

Example Usage

constcolors=require('ansi-colors');const{ Sort}=require('enquirer');constprompt=newSort({name:'colors',message:'Sort the colors in order of preference',hint:'Top is best, bottom is worst',numbered:true,choices:['red','white','green','cyan','yellow'].map(n=>({name:n,message:colors[n](n)}))});prompt.run().then(function(answer=[]){console.log(answer);console.log('Your preferred order of colors is:');console.log(answer.map(key=>colors[key](key)).join('\n'));}).catch(console.error);

Related prompts

↑ back to:Getting Started ·Prompts


Snippet Prompt

Prompt that allows the user to replace placeholders in a snippet of code or text.

Prompts

Example Usage

constsemver=require('semver');const{ Snippet}=require('enquirer');constprompt=newSnippet({name:'username',message:'Fill out the fields in package.json',required:true,fields:[{name:'author_name',message:'Author Name'},{name:'version',validate(value,state,item,index){if(item&&item.name==='version'&&!semver.valid(value)){returnprompt.styles.danger('version should be a valid semver value');}returntrue;}}],template:`{  "name": "\${name}",  "description": "\${description}",  "version": "\${version}",  "homepage": "https://github.com/\${username}/\${name}",  "author": "\${author_name} (https://github.com/\${username})",  "repository": "\${username}/\${name}",  "license": "\${license:ISC}"}`});prompt.run().then(answer=>console.log('Answer:',answer.result)).catch(console.error);

Related prompts

↑ back to:Getting Started ·Prompts


Toggle Prompt

Prompt that allows the user to toggle between two values then returnstrue orfalse.

Enquirer Toggle Prompt

Example Usage

const{ Toggle}=require('enquirer');constprompt=newToggle({message:'Want to answer?',enabled:'Yep',disabled:'Nope'});prompt.run().then(answer=>console.log('Answer:',answer)).catch(console.error);

Related prompts

↑ back to:Getting Started ·Prompts


Prompt Types

There are 5 (soon to be 6!) type classes:

Each type is a low-level class that may be used as a starting point for creating higher level prompts. Continue reading to learn how.

ArrayPrompt

TheArrayPrompt class is used for creating prompts that display a list of choices in the terminal. For example, Enquirer uses this class as the basis for theSelect andSurvey prompts.

Options

In addition to theoptions available to all prompts, Array prompts also support the following options.

OptionRequired?TypeDescription
autofocusnostring|numberThe index or name of the choice that should have focus when the prompt loads. Only one choice may have focus at a time.
stdinnostreamThe input stream to use for emitting keypress events. Defaults toprocess.stdin.
stdoutnostreamThe output stream to use for writing the prompt to the terminal. Defaults toprocess.stdout.

Properties

Array prompts have the following instance properties and getters.

Property nameTypeDescription
choicesarrayArray of choices that have been normalized from choices passed on the prompt options.
cursornumberPosition of the cursor relative to theuser input (string).
enabledarrayReturns an array of enabled choices.
focusedarrayReturns the currently selected choice in the visible list of choices. This is similar to the concept of focus in HTML and CSS. Focused choices are always visible (on-screen). When a list of choices is longer than the list of visible choices, and an off-screen choice isfocused, the list will scroll to the focused choice and re-render.
focusedGets the currently selected choice. Equivalent toprompt.choices[prompt.index].
indexnumberPosition of the pointer in thevisible list (array) of choices.
limitnumberThe number of choices to display on-screen.
selectedarrayEither a list of enabled choices (whenoptions.multiple is true) or the currently focused choice.
visiblestring

Methods

MethodDescription
pointer()Returns the visual symbol to use to identify the choice that currently has focus. The symbol is often used for this. The pointer is not always visible, as with theautocomplete prompt.
indicator()Returns the visual symbol that indicates whether or not a choice is checked/enabled.
focus()Sets focus on a choice, if it can be focused.

Choices

Array prompts support thechoices option, which is the array of choices users will be able to select from when rendered in the terminal.

Type:string|object

Example

const{ prompt}=require('enquirer');constquestions=[{type:'select',name:'color',message:'Favorite color?',initial:1,choices:[{name:'red',message:'Red',value:'#ff0000'},//<= choice object{name:'green',message:'Green',value:'#00ff00'},//<= choice object{name:'blue',message:'Blue',value:'#0000ff'}//<= choice object]}];letanswers=awaitprompt(questions);console.log('Answer:',answers.color);

Defining choices

Whether defined as a string or object, choices are normalized to the following interface:

{  name:string;  message:string|undefined;  value:string|undefined;  hint:string|undefined;  disabled:boolean|string|undefined;}

Example

constquestion={name:'fruit',message:'Favorite fruit?',choices:['Apple','Orange','Raspberry']};

Normalizes to the following when the prompt is run:

constquestion={name:'fruit',message:'Favorite fruit?',choices:[{name:'Apple',message:'Apple',value:'Apple'},{name:'Orange',message:'Orange',value:'Orange'},{name:'Raspberry',message:'Raspberry',value:'Raspberry'}]};

Choice properties

The following properties are supported onchoice objects.

OptionTypeDescription
namestringThe unique key to identify a choice
messagestringThe message to display in the terminal.name is used when this is undefined.
valuestringValue to associate with the choice. Useful for creating key-value pairs from user choices.name is used when this is undefined.
choicesarrayArray of "child" choices.
hintstringHelp message to display next to a choice.
rolestringDetermines how the choice will be displayed. Currently the only role supported isseparator. Additional roles may be added in the future (likeheading, etc). Please create a [feature request]
enabledbooleanEnabled a choice by default. This is only supported whenoptions.multiple is true or on prompts that support multiple choices, likeMultiSelect.
disabledboolean|stringDisable a choice so that it cannot be selected. This value may either betrue,false, or a message to display.
indicatorstring|functionCustom indicator to render for a choice (like a check or radio button).

Related prompts


AuthPrompt

TheAuthPrompt is used to create prompts to log in user using any authentication method. For example, Enquirer uses this class as the basis for theBasicAuth Prompt. You can also find prompt examples inexamples/auth/ folder that utilizesAuthPrompt to create OAuth based authentication prompt or a prompt that authenticates using time-based OTP, among others.

AuthPrompt has a factory function that creates an instance ofAuthPrompt class and it expects anauthenticate function, as an argument, which overrides theauthenticate function of theAuthPrompt class.

Methods

MethodDescription
authenticate()Contain all the authentication logic. This function should be overridden to implement custom authentication logic. The defaultauthenticate function throws an error if no other function is provided.

Choices

Auth prompt supports thechoices option, which is the similar to the choices used inForm Prompt.

Example

const{ AuthPrompt}=require('enquirer');functionauthenticate(value,state){if(value.username===this.options.username&&value.password===this.options.password){returntrue;}returnfalse;}constCustomAuthPrompt=AuthPrompt.create(authenticate);constprompt=newCustomAuthPrompt({name:'password',message:'Please enter your password',username:'rajat-sr',password:'1234567',choices:[{name:'username',message:'username'},{name:'password',message:'password'}]});prompt.run().then(answer=>console.log('Authenticated?',answer)).catch(console.error);

Related prompts


BooleanPrompt

TheBooleanPrompt class is used for creating prompts that display and return a boolean value.

const{ BooleanPrompt}=require('enquirer');constprompt=newBooleanPrompt({header:'========================',message:'Do you love enquirer?',footer:'========================',});prompt.run().then(answer=>console.log('Selected:',answer)).catch(console.error);

Returns:boolean


NumberPrompt

TheNumberPrompt class is used for creating prompts that display and return a numerical value.

const{ NumberPrompt}=require('enquirer');constprompt=newNumberPrompt({header:'************************',message:'Input the Numbers:',footer:'************************',});prompt.run().then(answer=>console.log('Numbers are:',answer)).catch(console.error);

Returns:string|number (number, or number formatted as a string)


StringPrompt

TheStringPrompt class is used for creating prompts that display and return a string value.

const{ StringPrompt}=require('enquirer');constprompt=newStringPrompt({header:'************************',message:'Input the String:',footer:'************************'});prompt.run().then(answer=>console.log('String is:',answer)).catch(console.error);

Returns:string


❯ Custom prompts

With Enquirer 2.0, custom prompts are easier than ever to create and use.

How do I create a custom prompt?

Custom prompts are created by extending either:

  • Enquirer'sPrompt class
  • one of the built-inprompts, or
  • low-leveltypes.
const{ Prompt}=require('enquirer');classHaiKarateextendsPrompt{constructor(options={}){super(options);this.value=options.initial||0;this.cursorHide();}up(){this.value++;this.render();}down(){this.value--;this.render();}render(){this.clear();// clear previously rendered prompt from the terminalthis.write(`${this.state.message}:${this.value}`);}}// Use the prompt by creating an instance of your custom prompt class.constprompt=newHaiKarate({message:'How many sprays do you want?',initial:10});prompt.run().then(answer=>console.log('Sprays:',answer)).catch(console.error);

If you want to be able to specify your prompt bytype so that it may be used alongside other prompts, you will need to first create an instance ofEnquirer.

constEnquirer=require('enquirer');constenquirer=newEnquirer();

Then use the.register() method to add your custom prompt.

enquirer.register('haikarate',HaiKarate);

Now you can do the following when defining "questions".

letspritzer=require('cologne-drone');letanswers=awaitenquirer.prompt([{type:'haikarate',name:'cologne',message:'How many sprays do you need?',initial:10,asynconSubmit(name,value){awaitspritzer.activate(value);//<= activate dronereturnvalue;}}]);

❯ Key Bindings

All prompts

These key combinations may be used with all prompts.

commanddescription
ctrl +cCancel the prompt.
ctrl +gReset the prompt to its initial state.

Move cursor

These combinations may be used on prompts that support user input (eg.input prompt,password prompt, andinvisible prompt).

commanddescription
leftMove the cursor back one character.
rightMove the cursor forward one character.
ctrl +aMove cursor to the start of the line
ctrl +eMove cursor to the end of the line
ctrl +bMove cursor back one character
ctrl +fMove cursor forward one character
ctrl +xToggle between first and cursor position

Edit Input

These key combinations may be used on prompts that support user input (eg.input prompt,password prompt, andinvisible prompt).

commanddescription
ctrl +aMove cursor to the start of the line
ctrl +eMove cursor to the end of the line
ctrl +bMove cursor back one character
ctrl +fMove cursor forward one character
ctrl +xToggle between first and cursor position

command (Mac)command (Windows)description
deletebackspaceDelete one character to the left.
fn +deletedeleteDelete one character to the right.
option +upalt +upScroll to the previous item in history (Input prompt only, whenhistory is enabled).
option +downalt +downScroll to the next item in history (Input prompt only, whenhistory is enabled).

Select choices

These key combinations may be used on prompts that supportmultiple choices, such as themultiselect prompt, or theselect prompt when themultiple options is true.

commanddescription
spaceToggle the currently selected choice whenoptions.multiple is true.
numberMove the pointer to the choice at the given index. Also toggles the selected choice whenoptions.multiple is true.
aToggle all choices to be enabled or disabled.
iInvert the current selection of choices.
gToggle the current choice group.

Hide/show choices

commanddescription
fn +upDecrease the number of visible choices by one.
fn +downIncrease the number of visible choices by one.

Move/lock Pointer

commanddescription
numberMove the pointer to the choice at the given index. Also toggles the selected choice whenoptions.multiple is true.
upMove the pointer up.
downMove the pointer down.
ctrl +aMove the pointer to the firstvisible choice.
ctrl +eMove the pointer to the lastvisible choice.
shift +upScroll up one choice without changing pointer position (locks the pointer while scrolling).
shift +downScroll down one choice without changing pointer position (locks the pointer while scrolling).

command (Mac)command (Windows)description
fn +lefthomeMove the pointer to the first choice in the choices array.
fn +rightendMove the pointer to the last choice in the choices array.

❯ Release History

Please seeCHANGELOG.md.

❯ Performance

System specs

MacBook Pro, Intel Core i7, 2.5 GHz, 16 GB.

Load time

Time it takes for the module to load the first time (average of 3 runs):

enquirer: 4.013msinquirer: 286.717ms

❯ About

Contributing

Pull requests and stars are always welcome. For bugs and feature requests,please create an issue.

Todo

We're currently working on documentation for the following items. Please star and watch the repository for updates!

  • Customizing symbols
  • Customizing styles (palette)
  • Customizing rendered input
  • Customizing returned values
  • Customizing key bindings
  • Question validation
  • Choice validation
  • Skipping questions
  • Async choices
  • Async timers: loaders, spinners and other animations
  • Links to examples
Running Tests

Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:

npm install&& npmtest
yarn&& yarntest
Building docs

(This project's readme.md is generated byverb, please don't edit the readme directly. Any changes to the readme must be made in the.verb.md readme template.)

To generate the readme, run the following command:

npm install -g verbose/verb#dev verb-generate-readme&& verb

Contributors

CommitsContributor
312jonschlinkert
86doowb
32rajat-sr
20318097
15g-plane
12pixelass
5adityavyas611
5satotake
3hongaar
3Ovyerus
3swyxio
2GabeL7r
2Andarist
1ahmadawais
1AlCalzone
1hipstersmoothie
1TrySound
1brentjanderson
1camilaibs
1AgentEnder
1danieldelcore
1deve-sh
1shortercode
1ImgBotApp
1shumkov
1jsonkao
1JounQin
1knpwrs
1yeskunall
1mischah
1starpit
1remcohaszing
1renarsvilnis
1rstagi
1sbugert
1skellock
1tinesoft
1busticated
1cha147
1jmlee2k
1lef237
1peterroe
1spwoodall
1whxaxes
1holynewbie
1xulingling0

Author

Jon Schlinkert

Credit

Thanks toderhuerst, creator of prompt libraries such asprompt-skeleton, which influenced some of the concepts we used in our prompts.

License

Copyright © 2018-present,Jon Schlinkert.Released under theMIT License.

About

Stylish, intuitive and user-friendly prompts. Used by eslint, webpack, yarn, pm2, pnpm, RedwoodJS, FactorJS, salesforce, Cypress, Google Lighthouse, Generate, tencent cloudbase, lint-staged, gluegun, hygen, hardhat, AWS Amplify, GitHub Actions Toolkit, @airbnb/nimbus, and more! Please follow Enquirer's author:https://github.com/jonschlinkert

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

 

Contributors48


[8]ページ先頭

©2009-2025 Movatter.jp