Package Exports
- enquirer
- enquirer/lib/utils
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (enquirer) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
enquirer

Intuitive, plugin-based prompt system for node.js. Much faster alternative to Inquirer, with all the same prompt types and more.
Table of Contents
(TOC generated by verb using markdown-toc)
Install
Install with npm:
$ npm install --save enquirerWhat is this?
This is a faster, lighter, plugin-based alternative to inquirer, with support for all of the same prompt types and features.
Why another prompt modules?
We use prompts extensively in generate, verb, update and assemble, and other libries we maintain, and we wanted to improve the user experience and reduce dependencies associated with other libraries we tried, like Inquirer.
Initial load time
Enquirer takes ~11ms to load. This is about the same amount of time that it takes chalk to load.
By comparison, Inquirer takes ~120ms just to load!!! This is about how long it takes babel, or other massive libraries that you would never include in production code.
Regardless of whether or not a prompt is every actually used, your own application will be 120ms slower from having Inquirer in its dependency tree. This is caused by its own massive dependency tree, code redundancy, monolithic and slow [reactive interface][] (which makes little sense for this use case anyway), poor API design (Inquirer actually executes code, even if you never call the library!), and so on.
120ms might not seem like a lot, but there is a critical threshold where performance of an application begins to feel laggy, and this cuts into that threshold significantly, leaving less room for everything else.
Usage
var enquirer = require('enquirer');API
Enquirer
Create an instance of Enquirer with the given options.
Params
options{Object}
Example
var enquirer = new Enquirer();.register
Register a new prompt type with the given fn.
Params
type{String}: The name of the prompt typefn{Function}: Prompt function that inherits from enquirer-prompt.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 ofEnquirerreturns{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 objectmessage{String|Object}: Message or options objectoptions{Object}returns{Object}: Returns the created question object
Events
emits:question
Example
var question = enquirer.question('name', 'What is your name?');.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:askWith the array ofquestionsto be asked
Example
enquirer.question('first', 'First name?');
enquirer.question('last', 'Last name?');
enquirer.ask('first')
.then(function(answers) {
console.log(answers)
});.prompt
Initialize a prompt session for a single question. Used by the ask method.
Params
name{String}
Events
emits:promptwith thedefaultvalue,key,questionobject, andanswersobjectemits:answerwith theanswervalue,key,questionobject, andanswersobject
Example
enquirer.question('first', 'First name?');
enquirer.prompt('first')
.then(function(answers) {
console.log(answers)
});Prompt types
What is a prompt "type"?
Prompt types determine the type of question, or prompt, to initiate. Currently, the only prompt type included in enquirer is input.
The following types are all available as plugins:
-
checkbox([enquirer-prompt-checkbox][]) -
confirm([enquirer-prompt-confirm][]) -
editor([enquirer-prompt-editor][]) -
expand([enquirer-prompt-expand][]) -
input(enquirer-prompt-input) (included in enquirer by default) -
list([enquirer-prompt-list][]) -
password([enquirer-prompt-password][]) -
radio([enquirer-prompt-radio][]) -
rawlist([enquirer-prompt-rawlist][])
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 enquirer-prompt-*.
TBC
Plugins
TODO
Publishing plugins
Plugin modules are named using the convention enquirer-*.
TBC
About
Related projects
- enquirer-prompt: Base prompt module used for creating custom prompt types for Enquirer. | homepage
- enquirer-question: Question object, used by Enquirer and prompt plugins. | homepage
- prompt-choices: Create an array of multiple choice objects for use in prompts. | homepage
- readline-utils: Readline utils, for moving the cursor, clearing lines, creating a readline interface, and more. | homepage
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Please read the contributing guide for avice on opening issues, pull requests, and coding standards.
Building docs
(This document was generated by verb-generate-readme (a verb generator), please don't edit the readme directly. Any changes to the readme must be made in .verb.md.)
To generate the readme and API documentation with verb:
$ npm install -g verb verb-generate-readme && verbRunning tests
Install dev dependencies:
$ npm install -d && npm testAuthor
Jon Schlinkert
License
Copyright © 2016, Jon Schlinkert. Released under the MIT license.
This file was generated by verb-generate-readme, v0.1.30, on August 28, 2016.