Socket
Socket
Sign inDemoInstall

enquirer

Package Overview
Dependencies
1
Maintainers
2
Versions
37
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    enquirer

Stylish, intuitive and user-friendly prompt system. Fast and lightweight enough for small projects, powerful and extensible enough for the most advanced use cases.


Version published
Maintainers
2
Install size
148 kB
Created

Package description

What is enquirer?

The enquirer npm package is a stylish, intuitive, and user-friendly way to interact with users via the command line. It provides a rich set of prompt types and utilities to make CLI development easier and more interactive.

What are enquirer's main functionalities?

Text Input

This feature allows you to ask users for text input. The example shows how to ask for a username.

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

prompt({
  type: 'input',
  name: 'username',
  message: 'What is your username?'
}).then(answer => console.log('Username:', answer.username));

Password Input

This feature enables you to securely ask users for a password, hiding their input on the screen.

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

prompt({
  type: 'password',
  name: 'password',
  message: 'What is your password?'
}).then(answer => console.log('Password:', answer.password));

Multiple Choice (Select)

This feature allows users to choose from a list of options. The example demonstrates asking users to pick a color from a list.

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

prompt({
  type: 'select',
  name: 'color',
  message: 'Pick a color',
  choices: ['Red', 'Green', 'Blue']
}).then(answer => console.log('Selected color:', answer.color));

Checkbox

This feature lets users select multiple options from a list. The example asks users to select their favorite fruits.

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

prompt({
  type: 'multiselect',
  name: 'fruits',
  message: 'What are your favorite fruits?',
  choices: ['Apple', 'Orange', 'Grape', 'Watermelon']
}).then(answer => console.log('Favorite fruits:', answer.fruits));

Other packages similar to enquirer

Readme

Source

Enquirer

version travis downloads install size



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



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 about 3-4 times faster than a single frame of a HD movie at 60fps)
  • Lightweight - Only one dependency.
  • Easy to use - Uses promises and async/await to make prompts easy to create and use.
  • Intuitive - Navigating around input and choices is a breeze. Advanced keypress combos are available to simplify usage. You can even record and playback keypresses to aid with tutorials and videos.
  • Multilingual - Easily add support for multiple languages.
  • Extensible - Prompts are easy to create and extend.
  • Flexible - All prompts can be used standalone or chained together.
  • Pluggable - Add advanced features to Enquirer with plugins.
  • Stylish - Easily override styles and symbols for any part of the prompt.
  • 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.



❯ Install

Install with npm:

$ npm install --save enquirer@beta

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




❯ Getting started

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




❯ Usage

Single prompt

Pass a question object to run a single prompt.

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

const response = await prompt({
  type: 'input',
  name: 'username',
  message: 'What is your username?' 
});

console.log(response); 
//=> { username: 'jonschlinkert' }

(Examples with await need to be run inside an async function)

Multiple prompts

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

const response = await prompt([
  {
    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' }



❯ API

Enquirer

Create an instance of Enquirer.

Params

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

Example

const Enquirer = require('enquirer');
const enquirer = new Enquirer();

register

Register a custom prompt type.

Params

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

Example

const Enquirer = require('enquirer');
const enquirer = new Enquirer();
enquirer.register('customType', require('./custom-prompt'));

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

const Enquirer = require('enquirer');
const enquirer = new Enquirer();

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

use

Use an enquirer plugin.

Params

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

Example

const Enquirer = require('enquirer');
const enquirer = new Enquirer();
const plugin = enquirer => {
  // do stuff to enquire instance
};
enquirer.use(plugin);

use

Programmatically cancel all prompts.

Params

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

Example

const Enquirer = require('enquirer');
const enquirer = new Enquirer();

enquirer.use(plugin);

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

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

Prompt API




❯ Options

Enquirer options

TODO

Prompt options

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

{
  type: string | function,
  name: string | function,
  message: string | function | async function,
  initial: string | function | async function
  format: function | async function,
  answer: function | async function,
  validate: function | async function
}
PropertyTypeDescription
type (required)string, functionEnquirer uses this value to determine the type of prompt to run, but it's optional when prompts are run directly.
name (required)string, functionUsed as the key for the answer on the returned values (answers) object.
message (required)string, functionThe message to display when the prompt is rendered in the terminal.
initial (optional)string, functionThe default value to return if the user does not supply a value.
format (optional)functionFunction to format user input in the terminal.
result (optional)functionFunction to format the final, submitted value before it's returned.
validate (optional)functionFunction 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

const question = {
  type: 'select',
  name: 'color',
  message: 'Favorite color?',
  initial: 1,
  choices: [
    { name: 'red',   message: 'Red',   value: '#ff0000' },
    { name: 'green', message: 'Green', value: '#00ff00' },
    { name: 'blue',  message: 'Blue',  value: '#0000ff' }
  ]
};

Choice objects

Choice {
  name: string;
  message: string | undefined;
  value: string | undefined;
  hint: string | undefined;
  disabled: boolean | string | undefined;
  enabled: boolean | undefined;
}
PropertyTypeDescription
namestringThe unique id for a choice
messagestringThe message to display
valuestringThe value to return if the choice is selected
aliasstringSingle character to use when keypress shortcuts are supported
hintstring
errorstring
disabledboolean
separatorboolean
selectedboolean

❯ Performance

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.013ms
inquirer: 286.717ms
prompts: 17.010ms

❯ Credit

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

About

Contributing

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

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 && npm test
Building docs

(This project's readme.md is generated by verb, 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
72jonschlinkert
12doowb
1mischah
1skellock

Author

Jon Schlinkert

License

Copyright © 2018, Jon Schlinkert. Released under the MIT License.

Keywords

FAQs

Last updated on 07 Nov 2018

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc