A nodejs library for issuing and handling responses to yes/no questions
Supports Node 8+.
npm install yesnoimportyesnofrom'yesno';// modern es modules approach// *OR*constyesno=require('yesno');// commonjs approachconstok=awaityesno({question: 'Are you sure you want to continue?'});yesno accepts yes, y , no, and n values by default.
All yesno responses are case insensitive.
constok=awaityesno({question: 'Dude, Is this groovy or what?',yesValues: ['groovy'],noValues: ['or what','nah']});console.log(ok ? 'Tubular.' : 'Aw, why you gotta be like that?');Now the question only responds to groovy as yes and or what as no.
Sometimes you may want to ensure the user didn't accidentally accept a default. You can disable the default response by passing null as the defaultValue parameter.
constok=awaityesno({question: 'Are you sure you want to 'rm-rf/' ?',defaultValue: null});By default, if the user enters a value that isn't recognized as an acceptable response, it will print out a message like:
Invalid response.
Answer either yes : (yes, y)
Or no : (no, n)
and re-ask the question. If you want to change this behavior, you can set the invalid handler before asking your question:
constok=awaityesno({question: 'Ready to continue?',invalid: function({ question, defaultValue, yesValues, noValues }){process.stdout.write("\n Whoa. That was not a good answer. Well. No more tries for you.");process.exit(1);}});