Intuitive, plugin-based prompt system for node.js. Much faster alternative to Inquirer, with all the same prompt types and more.
Clone or download
Latest commit 752a5be Dec 28, 2017
Permalink
Failed to load latest commit information.
.github first commit Aug 28, 2016
docs Switches prompt-text to prompt-input. Nov 6, 2017
examples update docs May 28, 2017
support Switches prompt-text to prompt-input. Nov 6, 2017
test linting Dec 28, 2017
.editorconfig first commit Aug 28, 2016
.eslintrc.json run update Dec 28, 2017
.gitattributes first commit Aug 28, 2016
.gitignore run update Dec 28, 2017
.travis.yml run update Dec 28, 2017
.verb.md run verb to generate readme May 28, 2017
LICENSE run update Dec 28, 2017
README.md run verb to generate readme Dec 28, 2017
appveyor.yml run update Dec 28, 2017
gulpfile.js first commit Aug 28, 2016
index.js linting Dec 28, 2017
package.json 1.0.3 Dec 28, 2017

README.md

enquirer NPM version NPM monthly downloads NPM total downloads Linux Build Status Windows Build Status

Intuitive, plugin-based prompt system for node.js.

Table of Contents

(TOC generated by verb using markdown-toc)

Usage

Enquirer

Create an instance of Enquirer with the given options.

Params

  • options {Object}

Example

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

.register

Register a new prompt type with the given fn.

Params

  • type {String}: The name of the prompt type
  • fn {Function}: Prompt function that inherits from prompt-base.
  • returns {Object}: Returns the Enquirer instance for chaining.

Example

enquirer.register('confirm', require('enquirer-prompt-confirm'));

.use

Invoke a plugin fn

Params

  • fn {Function}: Function that takes an instance of Enquirer
  • returns {Object}: Returns the instance for chaining.

Example

enquirer.use(require('some-enquirer-plugin'));

.question

Create question name with the given message and options. Uses enquirer-question, visit that library for additional details.

Params

  • name {String|Object}: Name or options object
  • message {String|Object}: Message or options object
  • options {Object}
  • returns {Object}: Returns the created question object

Events

  • emits: question

Example

enquirer.question('color', 'What is your favorite color?');
enquirer.question('color', 'What is your favorite color?', {
  default: 'blue'
});
enquirer.question('color', {
  message: 'What is your favorite color?',
  default: 'blue'
});
enquirer.question({
  name: 'color',
  message: 'What is your favorite color?',
  default: 'blue'
});
enquirer.question({
  name: 'color',
  type: 'input', // "input" is the default prompt type and doesn't need to be specified
  message: 'What is your favorite color?',
  default: 'blue'
});

.set

Set a question on enquirer.questions. Same as #question but returns the enquirer instance instead of the question object.

Params

  • name {String|Object}: Name or options object
  • message {String|Object}: Message or options object
  • options {Object}
  • returns {Object}: Returns the enquirer instance

Events

  • emits: question

.get

Get a registered question from enquirer.questions.

Params

  • name {String}: The name of the question to get.
  • returns {Object|undefined}: Returns the question object or undefined.

.has

Returns true if a question is registered on enquirer.questions.

Params

  • name {String}: The name of the question to check for.
  • returns {Boolean}

.ask

Initialize a prompt session for one or more questions.

  • returns {Array|Object} questions: One or more question objects or names of registered questions.

Events

  • emits: ask With the array of questions to be asked

Example

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

enquirer.question('first', 'First name?');
enquirer.question('last', 'Last name?');

enquirer.ask('first')
  .then(function(answers) {
    console.log(answers)
  });

// errors
enquirer.ask('first')
  .then(function(answers) {
    console.log(answers)
  })
  .catch(function(err) {
    console.log(err)
  });

.prompt

Initialize a prompt session for a single question. Used by the ask method.

Params

  • name {String}

Events

  • emits: prompt with the default value, key, question object, and answers object
  • emits: answer with the answer value, key, question object, and answers object

Example

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

enquirer.question('first', 'First name?');
enquirer.prompt('first')
  .then(function(answers) {
    console.log(answers)
  });

.separator

Create a new Separator to use in a choices array.

.Separator

Create a new Separator to use in a choices array.

Prompt types

What is a prompt "type"?

Prompt types determine the type of question - or prompt - to initiate. Currently, the only prompt type that ships with enquirer is input.

These following additional prompt types are available as plugins:

Or you can use enquirer-prompts, if you want a bundle with all of the listed prompt types.

Publishing prompt types

Prompt modules are named using the convention prompt-*.

TBC

Plugins

TODO

Publishing plugins

Plugin modules are named using the convention enquirer-*.

TBC

Why another prompt module?

We use prompts extensively in our projects, and we wanted to improve the user experience and reduce dependencies associated with other libraries we tried, like Inquirer.

Our main goals were:

  • reduce initial load time
  • make prompt-types easier to add
  • make code footprint smaller

About

Contributing

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

Please read the contributing guide for advice on opening issues, pull requests, and coding standards.

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

Author

Jon Schlinkert

License

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


This file was generated by verb-generate-readme, v0.6.0, on December 28, 2017.