Product
Introducing Ruby Support in Socket
Socket is launching Ruby support for all users. Enhance your Rails projects with AI-powered security scans for vulnerabilities and supply chain threats. Now in Beta!
@inquirer/prompts
Advanced tools
@inquirer/prompts is a collection of prompt modules for the Inquirer.js library, which is used to create interactive command-line interfaces. It provides a variety of prompt types to gather user input in a structured and user-friendly manner.
Text Prompt
The text prompt allows you to ask the user for a simple text input. In this example, the user is asked for their name, and the input is then printed to the console.
const { text } = require('@inquirer/prompts');
(async () => {
const answer = await text({ message: 'What is your name?' });
console.log(`Hello, ${answer}!`);
})();
Password Prompt
The password prompt is used to securely gather password input from the user. The input is masked to ensure privacy.
const { password } = require('@inquirer/prompts');
(async () => {
const answer = await password({ message: 'Enter your password:' });
console.log('Password received');
})();
Confirm Prompt
The confirm prompt asks the user a yes/no question. The response is a boolean value indicating the user's choice.
const { confirm } = require('@inquirer/prompts');
(async () => {
const answer = await confirm({ message: 'Do you want to continue?' });
console.log(`User response: ${answer}`);
})();
List Prompt
The list prompt presents a list of options to the user, allowing them to select one. The selected option is then returned.
const { list } = require('@inquirer/prompts');
(async () => {
const answer = await list({ message: 'Choose a color:', choices: ['Red', 'Green', 'Blue'] });
console.log(`You chose: ${answer}`);
})();
Checkbox Prompt
The checkbox prompt allows the user to select multiple options from a list. The selected options are returned as an array.
const { checkbox } = require('@inquirer/prompts');
(async () => {
const answer = await checkbox({ message: 'Select toppings:', choices: ['Pepperoni', 'Cheese', 'Mushrooms'] });
console.log(`You selected: ${answer.join(', ')}`);
})();
The 'prompts' package is another library for creating interactive command-line prompts. It offers a similar range of prompt types and is known for its simplicity and ease of use. Compared to @inquirer/prompts, 'prompts' is often praised for its minimalistic design and straightforward API.
The 'enquirer' package provides a rich set of prompt types and is designed to be highly customizable. It offers more advanced features and customization options compared to @inquirer/prompts, making it suitable for more complex CLI applications.
The 'vorpal' package is a framework for building interactive CLI applications. It includes built-in support for prompts and offers additional features like command history and tab completion. While it provides similar prompt functionalities, it is more comprehensive and suited for building full-fledged CLI tools.
A collection of common interactive command line user interfaces.
npm install @inquirer/prompts
yarn add @inquirer/prompts
Inquirer 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.
import { input } from '@inquirer/prompts';
const answer = await input({ message: 'Enter your name' });
import { input } from '@inquirer/prompts';
See documentation for usage example and options documentation.
import { select } from '@inquirer/prompts';
See documentation for usage example and options documentation.
import { checkbox } from '@inquirer/prompts';
See documentation for usage example and options documentation.
import { confirm } from '@inquirer/prompts';
See documentation for usage example and options documentation.
import { password } from '@inquirer/prompts';
See documentation for usage example and options documentation.
import { expand } from '@inquirer/prompts';
See documentation for usage example and options documentation.
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.
import { rawlist } from '@inquirer/prompts';
See documentation for usage example and options documentation.
The API documentation is over here, and our testing utilities here.
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,
}
);
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);
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' });
}
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)
Copyright (c) 2023 Simon Boudrias (twitter: @vaxilart)
Licensed under the MIT license.
FAQs
Inquirer prompts, combined in a single package
We found that @inquirer/prompts demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
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.
Product
Socket is launching Ruby support for all users. Enhance your Rails projects with AI-powered security scans for vulnerabilities and supply chain threats. Now in Beta!
Product
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Product
We're launching a new set of license analysis and compliance features for analyzing, managing, and complying with licenses across a range of supported languages and ecosystems.