Package Exports
- @inquirer/prompts
Readme
Inquirer
A collection of common interactive command line user interfaces.
Installation
npm install @inquirer/prompts
yarn add @inquirer/promptsInquirer recently underwent a rewrite from the ground up to reduce the package size and improve performance. The previous version of the package is still maintained (though not actively developed), and offered hundreds of community contributed prompts that might not have been migrated to the latest API. If this is what you're looking for, the previous package is over here.
Usage
import { input } from '@inquirer/prompts';
const answer = await input({ message: 'Enter your name' });Prompts
Input
import { input } from '@inquirer/prompts';See documentation for usage example and options documentation.
Select
import { select } from '@inquirer/prompts';See documentation for usage example and options documentation.
Checkbox
import { checkbox } from '@inquirer/prompts';See documentation for usage example and options documentation.
Confirm
import { confirm } from '@inquirer/prompts';See documentation for usage example and options documentation.
Password
import { password } from '@inquirer/prompts';See documentation for usage example and options documentation.
Expand
import { expand } from '@inquirer/prompts';See documentation for usage example and options documentation.
Editor
Launches an instance of the users preferred editor on a temporary file. Once the user exits their editor, the content of the temporary file is read as the answer. The editor used is determined by reading the $VISUAL or $EDITOR environment variables. If neither of those are present, the OS default is used (notepad on Windows, vim on Mac or Linux.)
import { editor } from '@inquirer/prompts';See documentation for usage example and options documentation.
Raw List
import { rawlist } from '@inquirer/prompts';See documentation for usage example and options documentation.
Create your own prompts
The API documentation is over here, and our testing utilities here.
Advanced usage
All inquirer prompts are a function taking 2 arguments. The first argument is the prompt configuration (unique to each prompt). The second is providing contextual or runtime configuration.
The context options are:
| Property | Type | Required | Description |
|---|---|---|---|
| input | NodeJS.ReadableStream |
no | The stdin stream (defaults to process.stdin) |
| output | NodeJS.WritableStream |
no | The stdout stream (defaults to process.stdout) |
| clearPromptOnDone | boolean |
no | If true, we'll clear the screen after the prompt is answered |
Example:
import { confirm } from '@inquirer/prompts';
const allowEmail = await confirm(
{ message: 'Do you allow us to send you email?' },
{
output: new Stream.Writable({
write(chunk, _encoding, next) {
// Do something
next();
},
}),
clearPromptOnDone: true,
}
);Recipes
Get answers in an object
When asking many questions, you might not want to keep one variable per answer everywhere. In which case, you can put the answer inside an object.
import { input, confirm } from '@inquirer/prompts';
const answers = {
firstName: await input({ message: "What's your first name?" }),
allowEmail: await confirm({ message: 'Do you allow us to send you email?' }),
};
console.log(answers.firstName);Ask a question conditionally
Maybe some questions depend on some other question's answer.
import { input, confirm } from '@inquirer/prompts';
const allowEmail = await confirm({ message: 'Do you allow us to send you email?' });
let email;
if (allowEmail) {
email = await input({ message: 'What is your email address' });
}Community prompts
If you created a cool prompt, send us a PR adding it to the list below!
Interactive List Prompt
Select a choice either with arrow keys + Enter or by pressing a key associated with a choice.
? Choose an option:
> Run command (D)
Quit (Q)License
Copyright (c) 2023 Simon Boudrias (twitter: @vaxilart)
Licensed under the MIT license.