Exploring Inquirer A Powerful JavaScript Library for Interactive Command Line Interfaces

Introduction to Inquirer

Inquirer is a powerful, user-friendly library for creating interactive command line interfaces (CLI) in Node.js. It provides a variety of prompt types to enhance user interaction, including input, confirm, list, rawlist, expand, checkbox, and editor prompts. Inquirer is highly customizable and supports asynchronous code, making it a perfect choice for developers looking to create advanced CLI applications.

API Examples

Basic Input Prompt

const inquirer = require('inquirer');

inquirer.prompt([
  {
    type: 'input',
    name: 'username',
    message: 'What is your name?',
  }
]).then(answers => {
  console.log(`Hello, ${answers.username}!`);
});

Confirm Prompt

inquirer.prompt([
  {
    type: 'confirm',
    name: 'continue',
    message: 'Do you want to continue?',
    default: false,
  }
]).then(answers => {
  if (answers.continue) {
    console.log('You chose to continue.');
  } else {
    console.log('You chose not to continue.');
  }
});

List Prompt

inquirer.prompt([
  {
    type: 'list',
    name: 'color',
    message: 'What is your favorite color?',
    choices: ['red', 'green', 'blue', 'yellow'],
  }
]).then(answers => {
  console.log(`Your favorite color is ${answers.color}.`);
});

Checkbox Prompt

inquirer.prompt([
  {
    type: 'checkbox',
    name: 'hobbies',
    message: 'Select your hobbies:',
    choices: ['Reading', 'Traveling', 'Cooking', 'Sports'],
  }
]).then(answers => {
  console.log(`Your hobbies are: ${answers.hobbies.join(', ')}.`);
});

Password Prompt

inquirer.prompt([
  {
    type: 'password',
    name: 'secret',
    message: 'Enter a secret:',
    mask: '*',
  }
]).then(answers => {
  console.log('Secret stored safely.');
});

App Example

Using the above prompts, let’s create a simple Node.js application that collects user information and displays a summary:

const inquirer = require('inquirer');

async function getUserInfo() {
  const userDetails = await inquirer.prompt([
    {
      type: 'input',
      name: 'username',
      message: 'What is your name?',
    },
    {
      type: 'list',
      name: 'color',
      message: 'What is your favorite color?',
      choices: ['red', 'green', 'blue', 'yellow'],
    },
    {
      type: 'checkbox',
      name: 'hobbies',
      message: 'Select your hobbies:',
      choices: ['Reading', 'Traveling', 'Cooking', 'Sports'],
    },
    {
      type: 'password',
      name: 'secret',
      message: 'Enter a secret:',
      mask: '*',
    },
    {
      type: 'confirm',
      name: 'continue',
      message: 'Do you want to continue?',
      default: false,
    },
  ]);

  console.log('\nSummary:');
  console.log(`Name: ${userDetails.username}`);
  console.log(`Favorite Color: ${userDetails.color}`);
  console.log(`Hobbies: ${userDetails.hobbies.join(', ')}`);
  console.log(`Secret: ${userDetails.secret ? 'Stored safely' : 'Not provided'}`);
  console.log(`Continue: ${userDetails.continue ? 'Yes' : 'No'}`);
}

getUserInfo();

The above app collects the user’s name, favorite color, hobbies, and a secret, then displays the collected information. This example showcases the powerful functionality and flexibility of Inquirer for creating interactive CLI applications.

Hash: bae4b5b0c4ba2afc827f807d762613db7897b2e8f880c4c701a26b58683968b8

Leave a Reply

Your email address will not be published. Required fields are marked *