Inquirer Checkbox Multiselect Prompt Flow

Build interactive CLI flows with Inquirer checkbox prompts, validated input, default selections, and answer-driven branching between steps.

JavascriptNodeCli Tooling

Code

snippet
import inquirer from 'inquirer';

const answers = await inquirer.prompt([
  {
    type: 'checkbox',
    name: 'services',
    message: 'Which services should the report cover?',
    choices: [
      { name: 'api-gateway', value: 'gw', checked: true },
      { name: 'billing', value: 'bill' },
      { name: 'search', value: 'search', disabled: 'data source offline' },
    ],
    validate: (list) => (list.length > 0 ? true : 'select at least one service'),
  },
  {
    type: 'input',
    name: 'ticket',
    message: 'Ops ticket number:',
    validate: (value) =>
      /^OPS-\d{4,6}$/.test(value) ? true : 'expected format: OPS-12345',
  },
  {
    type: 'confirm',
    name: 'notify',
    message: 'send summary to the on-call channel?',
    default: false,
  },
]);

console.log('report scope:', answers.services, 'ticket:', answers.ticket);