Select Prompt
Message and choices
The first select prompt in makesjs/demo2 questions.js:
module.exports = [
// ...
{
message: 'What type of project?',
choices: [
{value: 'nodejs', title: 'Node.js'},
{value: 'ruby', title: 'Ruby'}
]
}
// ...
];

Same as text prompt, you need to provide a message for user to read, plus a list of choices. Every choice can have:
value: (optional) a string value, invisible to end user.- you can only use letters, numbers, and dash(
-) in value string. - underscore(
_) is not permitted, because it’s a char to be used in condition expression part of file/folder name. We will explain in conditional file.
- you can only use letters, numbers, and dash(
title: what end user will read on screen.hint: (optional) additional explanation for end user to read on screen.
Example of choices with hints:
module.exports = [
// ...
{
message: 'What type of project?',
choices: [
{value: 'nodejs', title: 'Node.js', hint: 'Node.js® is a JavaScript runtime built on Chrome\'s V8 JavaScript engine.'},
{value: 'ruby', title: 'Ruby', hint: 'A dynamic, open source programming language with a focus on simplicity and productivity.'}
]
}
// ...
];

No name needed
Different from all popular prompts, inquirer, enquirer, and prompts, our select prompt doesn’t need
name.
While other popular select prompt returns an object like:
{ "name-of-the-select": "selected-value" }
We simply return "selected-value" or undefined (if user selected a choice with no value).
Features array
All answers from select/multi-select prompt questions are merged together into an array internally called features. For example, when end user selected nodejs and babel from two different select prompts, the features array becomes:
['nodejs', 'babel']
If end user selected a choice with no value or a value of empty string, “makes” will not add anything into the features array.
This simplification means all non-empty choice values among all select/multi-select prompts must be unique.
The features array is essential to conditional question/choice/file/content, which we will explain in related topics.
Conventional default answer
Select prompt doesn’t support default. For simplicity, the default answer of a select prompt is always the value of first available (after conditional filtering) choice. If there is no value on first available choice, the default value is undefined.