{"id":20206851,"url":"https://github.com/enquirer/prompt-base","last_synced_at":"2025-08-10T23:34:55.140Z","repository":{"id":57331706,"uuid":"66799935","full_name":"enquirer/prompt-base","owner":"enquirer","description":"This repository has been archived, use Enquirer instead.","archived":false,"fork":false,"pushed_at":"2018-09-14T01:19:52.000Z","size":168,"stargazers_count":22,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-08-09T13:39:41.542Z","etag":null,"topics":["cli","enquirer","prompt","questions","readline","terminal"],"latest_commit_sha":null,"homepage":"https://github.com/enquirer/enquirer","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/enquirer.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":".github/contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-29T01:08:22.000Z","updated_at":"2025-02-22T20:32:22.000Z","dependencies_parsed_at":"2022-09-05T10:10:56.618Z","dependency_job_id":null,"html_url":"https://github.com/enquirer/prompt-base","commit_stats":null,"previous_names":[],"tags_count":47,"template":false,"template_full_name":null,"purl":"pkg:github/enquirer/prompt-base","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enquirer%2Fprompt-base","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enquirer%2Fprompt-base/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enquirer%2Fprompt-base/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enquirer%2Fprompt-base/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/enquirer","download_url":"https://codeload.github.com/enquirer/prompt-base/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enquirer%2Fprompt-base/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269775481,"owners_count":24474003,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-10T02:00:08.965Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","enquirer","prompt","questions","readline","terminal"],"created_at":"2024-11-14T05:26:20.741Z","updated_at":"2025-08-10T23:34:55.116Z","avatar_url":"https://github.com/enquirer.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# prompt-base [![NPM version](https://img.shields.io/npm/v/prompt-base.svg?style=flat)](https://www.npmjs.com/package/prompt-base) [![NPM monthly downloads](https://img.shields.io/npm/dm/prompt-base.svg?style=flat)](https://npmjs.org/package/prompt-base) [![NPM total downloads](https://img.shields.io/npm/dt/prompt-base.svg?style=flat)](https://npmjs.org/package/prompt-base) [![Linux Build Status](https://img.shields.io/travis/enquirer/prompt-base.svg?style=flat\u0026label=Travis)](https://travis-ci.org/enquirer/prompt-base) [![Windows Build Status](https://img.shields.io/appveyor/ci/enquirer/prompt-base.svg?style=flat\u0026label=AppVeyor)](https://ci.appveyor.com/project/enquirer/prompt-base)\n\n\u003e Base prompt module used for creating custom prompts.\n\nPlease consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.\n\n## Install\n\nInstall with [npm](https://www.npmjs.com/):\n\n```sh\n$ npm install --save prompt-base\n```\n\n## Release history\n\nSee [the changelog](changelog.md) for detailed release history.\n\n## What is this?\n\nprompt-base is a node.js library for creating command line prompts. You can use prompt-base directly for simple input prompts, or as a \"base\" for creating [custom prompts](#in-the-wild):\n\n## Usage\n\nSee the [examples folder](./examples) for additional usage examples.\n\n```js\nvar Prompt = require('prompt-base');\nvar prompt = new Prompt({\n  name: 'color',\n  message: 'What is your favorite color?'\n});\n\n// promise\nprompt.run()\n  .then(function(answer) {\n    console.log(answer);\n    //=\u003e 'blue'\n  })\n\n// or async\nprompt.ask(function(answer) {\n  console.log(answer);\n  //=\u003e 'blue'\n});\n```\n\nYou can also pass a string directly to the main export:\n\n```js\nvar prompt = require('prompt-base')('What is your favorite color?');\n  \nprompt.run()\n  .then(function(answer) {\n    console.log(answer);\n  })\n```\n\n## Custom prompts\n\n**Inherit**\n\n```js\nvar Prompt = require('prompt-base');\n\nfunction CustomPrompt(/*question, answers, rl*/) {\n  Prompt.apply(this, arguments);\n}\n\nPrompt.extend(CustomPrompt);\n```\n\n## API\n\n### [Prompt](index.js#L35)\n\nCreate a new Prompt with the given `question` object, `answers` and optional instance of [readline-ui](https://github.com/enquirer/readline-ui).\n\n**Params**\n\n* `question` **{Object}**: Plain object or instance of [prompt-question](https://github.com/enquirer/prompt-question).\n* `answers` **{Object}**: Optionally pass an answers object from a prompt manager (like [enquirer](http://enquirer.io)).\n* `ui` **{Object}**: Optionally pass an instance of [readline-ui](https://github.com/enquirer/readline-ui). If not passed, an instance is created for you.\n\n**Example**\n\n```js\nvar prompt = new Prompt({\n  name: 'color',\n  message: 'What is your favorite color?'\n});\n\nprompt.ask(function(answer) {\n  console.log(answer);\n  //=\u003e 'blue'\n});\n```\n\n### [.transform](index.js#L101)\n\nModify the answer value before it's returned. Must return a string or promise.\n\n* `returns` **{String}**\n\n**Example**\n\n```js\nvar answers = {};\nvar Prompt = require('prompt-base');\nvar prompt = new Prompt({\n  name: 'name',\n  message: 'What is your name?',\n  transform: function(input) {\n    return input.toUpperCase();\n  }\n});\n```\n\n### [.validate](index.js#L139)\n\nValidate user input on `keypress` events and the answer value when it's submitted by the `line` event (when the user hits \u003ckbd\u003eenter\u003c/kbd\u003e. This may be overridden in custom prompts. If the function returns `false`, either `question.errorMessage` or the default validation error message (`invalid input`) is used. Must return a boolean, string or promise.\n\n* `returns` **{Boolean}**\n\n**Example**\n\n```js\nvar Prompt = require('prompt-base');\nvar prompt = new Prompt({\n  name: 'first',\n  message: 'What is your name?',\n  errorMessage: 'alphabetical characters only',\n  validate: function(input) {\n    var str = input ? input.trim() : '';\n    var isValid = /^[a-z]+$/i.test(str);\n    if (this.state === 'submitted') {\n      return str.length \u003e 10 \u0026\u0026 isValid;\n    }\n    return isValid;\n  }\n});\n```\n\n### [.when](index.js#L167)\n\nA custom `.when` function may be defined to determine\nwhether or not a question should be asked at all. Must\nreturn a boolean, undefined, or a promise.\n\n* `returns` **{Boolean}**\n\n**Example**\n\n```js\nvar answers = {};\nvar Prompt = require('prompt-base');\nvar prompt = new Prompt({\n  name: 'name',\n  message: 'What is your name?',\n  when: function(answers) {\n    return !answers.name;\n  }\n});\n```\n\n### [.ask](index.js#L193)\n\nRun the prompt with the given `callback` function.\n\n**Params**\n\n* `callback` **{Function}**\n* `returns` **{undefined}**\n\n**Example**\n\n```js\nvar Prompt = require('prompt-base');\nvar prompt = new Prompt({\n  name: 'name',\n  message: 'What is your name?'\n});\n\nprompt.ask(function(answer) {\n  console.log(answer);\n});\n```\n\n### [.run](index.js#L235)\n\nRun the prompt and resolve answers. If [when](#when) is defined and returns false, the prompt will be skipped.\n\n**Params**\n\n* `answers` **{Object}**: (optional) When supplied, the answer value will be added to a property where the key is the question name.\n* `returns` **{Promise}**\n\n**Example**\n\n```js\nvar answers = {};\nvar Prompt = require('prompt-base');\nvar prompt = new Prompt({\n  name: 'name',\n  message: 'What is your name?'\n});\n\nprompt.run(answers)\n  .then(function(answer) {\n    console.log(answer);\n    console.log(answers);\n  });\n```\n\n### [.getDefault](index.js#L273)\n\nGet the answer to use. This can be overridden in custom prompts.\n\n* `returns` **{String}**\n\n**Example**\n\n```js\nconsole.log(prompt.getDefault());\n```\n\n### [.getError](index.js#L306)\n\nGet the error message to use. This can be overridden in custom prompts.\n\n* `returns` **{String}**\n\n**Example**\n\n```js\nconsole.log(prompt.getError());\n```\n\n### [.getHelp](index.js#L320)\n\nGet the help message to use. This can be overridden in custom prompts.\n\n* `returns` **{String}**\n\n**Example**\n\n```js\nconsole.log(prompt.getHelp());\n```\n\n### [.getAnswer](index.js#L334)\n\nGet the answer to use. This can be overridden in custom prompts.\n\n* `returns` **{String}**\n\n**Example**\n\n```js\nconsole.log(prompt.getAnswer());\n```\n\n### [.render](index.js#L356)\n\n(Re-)render the prompt message, along with any help or error messages, user input, choices, list items, and so on. This is called to render the initial prompt, then it's called again each time the prompt changes, such as on keypress events (when the user enters input, or a multiple-choice option is selected). This method may be overridden in custom prompts, but it's recommended that you override the more specific render \"status\" methods instead.\n\n* `returns` **{undefined}**\n\n**Example**\n\n```js\nprompt.ui.on('keypress', prompt.render.bind(prompt));\n```\n\n### [.renderMessage](index.js#L436)\n\nFormat the prompt message.\n\n* `returns` **{String}**\n\n**Example**\n\n```js\nvar answers = {};\nvar Prompt = require('prompt-base');\nvar prompt = new Prompt({\n  name: 'name',\n  message: 'What is your name?',\n  transform: function(input) {\n    return input.toUpperCase();\n  }\n});\n```\n\n### [.renderBody](index.js#L449)\n\nCalled by [render](#render) to render the readline `line`\nwhen `prompt.status` is anything besides `answered`, which\nincludes everything except for error and help messages.\n\n* `returns` **{String}**\n\n### [.renderFooter](index.js#L461)\n\nCalled by [render](#render) to add a footer after\nthe message body.\n\n* `returns` **{String}**\n\n### [.renderHelp](index.js#L479)\n\nCalled by [render](#render) to render a help message when the\n`prompt.status` is `initialized` or `help` (usually when the\nprompt is first rendered). Calling this method changes the\n`prompt.status` to `\"interacted\"`, and as such, by default, the\nmessage is only displayed until the user interacts. By default\nthe help message is positioned to the right of the prompt \"question\".\nA custom help message may be defined on `options.helpMessage`.\n\n**Params**\n\n* `valid` **{boolean|string|undefined}**\n* `returns` **{String}**\n\n### [.renderError](index.js#L502)\n\nRender an error message in the prompt, when `valid` is\nfalse or a string. This is used when a validation method\neither returns `false`, indicating that the input\nwas invalid, or the method returns a string, indicating\nthat a custom error message should be rendered. A custom\nerror message may also be defined on `options.errorMessage`.\n\n**Params**\n\n* `valid` **{boolean|string|undefined}**\n* `returns` **{String}**\n\n### [.renderMask](index.js#L522)\n\nMask user input. Called by [renderBody](#renderBody),\nthis is an identity function that does nothing by default,\nas it's intended to be overwritten in custom prompts, such\nas [prompt-password](https://github.com/enquirer/prompt-password).\n\n* `returns` **{String}**\n\n### [.renderAnswer](index.js#L534)\n\nRender the user's \"answer\". Called by [render](#render) when\nthe `prompt.status` is changed to `answered`.\n\n* `returns` **{String}**\n\n### [.action](index.js#L554)\n\nGet action `name`, or set action `name` with the given `fn`.\nThis is useful for overridding actions in custom prompts.\nActions are used to move the pointer position, toggle checkboxes\nand so on\n\n**Params**\n\n* `name` **{String}**\n* `fn` **{Function}**\n* `returns` **{Object|Function}**: Returns the prompt instance if setting, or the action function if getting.\n\n### [.dispatch](index.js#L571)\n\nMove the cursor in the given `direction` when a `keypress`\nevent is emitted.\n\n**Params**\n\n* `direction` **{String}**\n* `event` **{Object}**\n\n### [.onError](index.js#L616)\n\nDefault error event handler. If an `error` listener exist, an `error`\nevent will be emitted, otherwise the error is logged onto `stderr` and\nthe process is exited. This can be overridden in custom prompts.\n\n**Params**\n\n* `err` **{Object}**\n\n### [.submitAnswer](index.js#L632)\n\nRe-render and pass the final answer to the callback.\nThis can be replaced by custom prompts.\n\n### [.only](index.js#L656)\n\nEnsures that events for event `name` are only **registered** once and are disabled correctly when specified. This is different from `.once`, which only **emits** once.\n\n**Example**\n\n```js\nprompt.only('keypress', function() {\n  // do keypress stuff\n});\n```\n\n### [.mute](index.js#L685)\n\nMutes the output stream that was used to create the readline interface, and returns a function for unmuting the stream. This is useful in unit tests.\n\n* `returns` **{Function}**\n\n**Example**\n\n```js\n// mute the stream\nvar unmute = prompt.mute();\n\n// unmute the stream\nunmute();\n```\n\n### [.end](index.js#L705)\n\nPause the readline and unmute the output stream that was\nused to create the readline interface, which is `process.stdout`\nby default.\n\n### [.resume](index.js#L720)\n\n[Resume](https://nodejs.org/api/readline.html#readline_rl_resume) the readline input stream if it has been paused.\n\n* `returns` **{undefined}**\n\n### [.choices](index.js#L773)\n\nGetter for getting the choices array from the question.\n\n* `returns` **{Object}**: Choices object\n\n### [.message](index.js#L790)\n\nGetter that returns `question.message` after passing it to [format](#format).\n\n* `returns` **{String}**: A formatted prompt message.\n\n### [.symbol](index.js#L811)\n\nGetter/setter for getting the checkbox symbol to use.\n\n* `returns` **{String}**: The formatted symbol.\n\n**Example**\n\n```js\n// customize\nprompt.symbol = '[ ]';\n```\n\n### [.prefix](index.js#L837)\n\nGetter/setter that returns the prefix to use before `question.message`. The default value is a green `?`.\n\n* `returns` **{String}**: The formatted prefix.\n\n**Example**\n\n```js\n// customize\nprompt.prefix = ' ❤ ';\n```\n\n### [.ask](index.js#L869)\n\nStatic convenience method for running the [.ask](#ask) method. Takes the same arguments as the contructror.\n\n**Params**\n\n* `question` **{Object}**: Plain object or instance of [prompt-question](https://github.com/enquirer/prompt-question).\n* `answers` **{Object}**: Optionally pass an answers object from a prompt manager (like [enquirer](http://enquirer.io)).\n* `ui` **{Object}**: Optionally pass an instance of [readline-ui](https://github.com/enquirer/readline-ui). If not passed, an instance is created for you.\n* `callback` **{Function}**\n* `returns` **{undefined}**\n\n**Example**\n\n```js\nvar prompt = require('prompt-base');\n  .ask('What is your favorite color?', function(answer) {\n    console.log({color: answer});\n    //=\u003e { color: 'blue' }\n  });\n```\n\n### [.run](index.js#L895)\n\nStatic convenience method for running the [.run](#run) method. Takes the same arguments as the contructror.\n\n**Params**\n\n* `question` **{Object}**: Plain object or instance of [prompt-question](https://github.com/enquirer/prompt-question).\n* `answers` **{Object}**: Optionally pass an answers object from a prompt manager (like [enquirer](http://enquirer.io)).\n* `ui` **{Object}**: Optionally pass an instance of [readline-ui](https://github.com/enquirer/readline-ui). If not passed, an instance is created for you.\n* `returns` **{Promise}**\n\n**Example**\n\n```js\nvar prompt = require('prompt-base');\n  .run('What is your favorite color?')\n  .then(function(answer) {\n    console.log({color: answer});\n    //=\u003e { color: 'blue' }\n  });\n```\n\n### [.Question](index.js#L911)\n\nCreate a new `Question`. See [prompt-question](https://github.com/enquirer/prompt-question) for more details.\n\n**Params**\n\n* `options` **{Object}**\n* `returns` **{Object}**: Returns an instance of [prompt-question](https://github.com/enquirer/prompt-question)\n\n**Example**\n\n```js\nvar question = new Prompt.Question({name: 'foo'});\n```\n\n### [.Choices](index.js#L925)\n\nCreate a new `Choices` object. See [prompt-choices](https://github.com/enquirer/prompt-choices) for more details.\n\n**Params**\n\n* `choices` **{Array}**: Array of choices\n* `returns` **{Object}**: Returns an intance of Choices.\n\n**Example**\n\n```js\nvar choices = new Prompt.Choices(['foo', 'bar', 'baz']);\n```\n\n### [.Separator](index.js#L938)\n\nCreate a new `Separator` object. See [choices-separator](https://github.com/enquirer/choices-separator) for more details.\n\n**Params**\n\n* `separator` **{String}**: Optionally pass a string to use as the separator.\n* `returns` **{Object}**: Returns a separator object.\n\n**Example**\n\n```js\nnew Prompt.Separator('---');\n```\n\n## Events\n\n### prompt\n\nEmitted when a prompt (plugin) is instantiated, _after the readline interface is created, but before the actual \"question\" is asked_.\n\n**Example usage**\n\n```js\nenquirer.on('prompt', function(prompt) {\n  // do stuff with \"prompt\" instance\n});\n```\n\n### ask\n\nEmitted when the actual \"question\" is asked.\n\n**Example usage**\n\nEmit `keypress` events to supply the answer (and potentially skip the prompt if the answer is valid):\n\n```js\nenquirer.on('ask', function(prompt) {\n  prompt.rl.input.emit('keypress', 'foo');\n  prompt.rl.input.emit('keypress', '\\n');\n});\n```\n\nChange the prompt message:\n\n```js\nenquirer.on('ask', function(prompt) {\n  prompt.message = 'I..\\'m Ron Burgundy...?';\n});\n```\n\n### answer\n\nEmitted when the final (valid) answer is submitted, and custom validation function (if defined) returns true.\n\n_(An \"answer\" is the final input value that's captured when the `readline` emits a `line` event; e.g. when the user hits `enter`)_\n\n**Example usage**\n\n```js\nenquirer.on('answer', function(answer) {\n  // do stuff with answer\n});\n```\n\n## In the wild\n\nThe following custom prompts were created using this library:\n\n* [prompt-autocomplete](https://www.npmjs.com/package/prompt-autocomplete): A prompt in the terminal but with autocomplete functionality | [homepage](https://github.com/rickbergfalk/prompt-autocomplete \"A prompt in the terminal but with autocomplete functionality\")\n* [prompt-checkbox](https://www.npmjs.com/package/prompt-checkbox): Multiple-choice/checkbox prompt. Can be used standalone or with a prompt system like [Enquirer](http://enquirer.io). | [homepage](https://github.com/enquirer/prompt-checkbox \"Multiple-choice/checkbox prompt. Can be used standalone or with a prompt system like [Enquirer].\")\n* [prompt-confirm](https://www.npmjs.com/package/prompt-confirm): Confirm (yes/no) prompt. Can be used standalone or with a prompt system like [Enquirer](http://enquirer.io). | [homepage](https://github.com/enquirer/prompt-confirm \"Confirm (yes/no) prompt. Can be used standalone or with a prompt system like [Enquirer].\")\n* [prompt-editor](https://www.npmjs.com/package/prompt-editor): Editor prompt. Opens your text editor and waits for you to save your input during… [more](https://github.com/enquirer/prompt-editor) | [homepage](https://github.com/enquirer/prompt-editor \"Editor prompt. Opens your text editor and waits for you to save your input during a prompt. Can be used standalone or with a prompt system like [Enquirer].\")\n* [prompt-expand](https://www.npmjs.com/package/prompt-expand): Expand prompt. Can be used as a standalone prompt, or with a prompt system like… [more](https://github.com/enquirer/prompt-expand) | [homepage](https://github.com/enquirer/prompt-expand \"Expand prompt. Can be used as a standalone prompt, or with a prompt system like [Enquirer].\")\n* [prompt-list](https://www.npmjs.com/package/prompt-list): List-style prompt. Can be used as a standalone prompt, or with a prompt system like… [more](https://github.com/enquirer/prompt-list) | [homepage](https://github.com/enquirer/prompt-list \"List-style prompt. Can be used as a standalone prompt, or with a prompt system like [enquirer].\")\n* [prompt-password](https://www.npmjs.com/package/prompt-password): Password prompt. Can be used as a standalone prompt, or as a plugin for [Enquirer](http://enquirer.io). | [homepage](https://github.com/enquirer/prompt-password \"Password prompt. Can be used as a standalone prompt, or as a plugin for [Enquirer].\")\n* [prompt-radio](https://www.npmjs.com/package/prompt-radio): Radio prompt. Can be used as a standalone prompt, or as a plugin for [Enquirer](http://enquirer.io). | [homepage](https://github.com/enquirer/prompt-radio \"Radio prompt. Can be used as a standalone prompt, or as a plugin for [Enquirer].\")\n* [prompt-rawlist](https://www.npmjs.com/package/prompt-rawlist): Rawlist prompt. Can be used as a standalone prompt, or with a prompt system like… [more](https://github.com/enquirer/prompt-rawlist) | [homepage](https://github.com/enquirer/prompt-rawlist \"Rawlist prompt. Can be used as a standalone prompt, or with a prompt system like [Enquirer].\")\n\n## About\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eContributing\u003c/strong\u003e\u003c/summary\u003e\n\nPull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).\n\nPlease read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eRunning Tests\u003c/strong\u003e\u003c/summary\u003e\n\nRunning 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:\n\n```sh\n$ npm install \u0026\u0026 npm test\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eBuilding docs\u003c/strong\u003e\u003c/summary\u003e\n\n_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_\n\nTo generate the readme, run the following command:\n\n```sh\n$ npm install -g verbose/verb#dev verb-generate-readme \u0026\u0026 verb\n```\n\n\u003c/details\u003e\n\n### Related projects\n\nYou might also be interested in these projects:\n\n* [enquirer](https://www.npmjs.com/package/enquirer): Intuitive, plugin-based prompt system for node.js. | [homepage](http://enquirer.io \"Intuitive, plugin-based prompt system for node.js.\")\n* [prompt-choices](https://www.npmjs.com/package/prompt-choices): Create an array of multiple choice objects for use in prompts. | [homepage](https://github.com/enquirer/prompt-choices \"Create an array of multiple choice objects for use in prompts.\")\n* [prompt-question](https://www.npmjs.com/package/prompt-question): Question object, used by Enquirer and prompt plugins. | [homepage](https://github.com/enquirer/prompt-question \"Question object, used by Enquirer and prompt plugins.\")\n* [readline-utils](https://www.npmjs.com/package/readline-utils): Readline utils, for moving the cursor, clearing lines, creating a readline interface, and more. | [homepage](https://github.com/enquirer/readline-utils \"Readline utils, for moving the cursor, clearing lines, creating a readline interface, and more.\")\n\n### Contributors\n\n| **Commits** | **Contributor** | \n| --- | --- |\n| 170 | [jonschlinkert](https://github.com/jonschlinkert) |\n| 6 | [doowb](https://github.com/doowb) |\n| 1 | [sbj42](https://github.com/sbj42) |\n\n### Author\n\n**Jon Schlinkert**\n\n* [github/jonschlinkert](https://github.com/jonschlinkert)\n* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)\n\n### License\n\nCopyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).\nReleased under the [MIT License](LICENSE).\n\n***\n\n_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on October 20, 2017._","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenquirer%2Fprompt-base","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fenquirer%2Fprompt-base","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenquirer%2Fprompt-base/lists"}