termprompt

multiselect

Pick multiple options from a list.

Preview

Selecting

multiselect
Select features
> TypeScript
ESLint
Vitest
GitHub Actions

After submit

multiselect
Select features
TypeScript, Vitest

Usage

import { multiselect, isCancel } from 'termprompt';

const features = await multiselect({
  message: 'Select features',
  options: [
    { value: 'ts', label: 'TypeScript' },
    { value: 'lint', label: 'ESLint' },
    { value: 'test', label: 'Vitest' },
    { value: 'ci', label: 'GitHub Actions' },
  ],
});

if (isCancel(features)) process.exit(0);
console.log(features); // ['ts', 'lint', ...]

Props

PropTypeDefaultDescription
messagestringrequiredQuestion text
optionsOption<T>[]requiredList of choices
initialValuesT[][]Pre-selected values
requiredbooleantrueRequire at least one selection
maxItemsnumber10Visible items before scrolling

Pre-selected Values

const extras = await multiselect({
  message: 'Extras',
  options: [
    { value: 'ts', label: 'TypeScript' },
    { value: 'lint', label: 'ESLint' },
    { value: 'test', label: 'Vitest' },
  ],
  initialValues: ['ts', 'lint'],
});

Optional Selection

Set required: false to allow submitting with no selections.

const extras = await multiselect({
  message: 'Optional extras',
  options: [...],
  required: false,
});

Keyboard

KeyAction
Up / kMove up
Down / jMove down
SpaceToggle current
aToggle all
EnterSubmit
EscCancel

On this page