Security News
JSR Working Group Kicks Off with Ambitious Roadmap and Plans for Open Governance
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
question-store
Advanced tools
Ask questions, persist the answers. Basic support for i18n and storing answers based on current working directory.
Ask questions, persist the answers. Basic support for i18n and storing answers based on current working directory.
(TOC generated by verb using markdown-toc)
Install with npm:
$ npm install question-store --save
Similar to question-cache, but persists answers to disk and supports locales and storing answers based on current working directory.
var Questions = require('question-store');
Create an instance of Questions
with the given options
.
Params
options
{Object}: question store optionsExample
var Questions = new Questions(options);
Create stores for persisting data across sessions.
globals
: Persist non-project-specific answers when question.options.global
is truestore
: Persist project-specific answershints
: Persist project-specific hints. This is used to populate the question.default
value.Params
options
{Object}returns
{Object}Calls addQuestion, with the only difference being that .set
returns the questions
instance and .addQuestion
returns the question object. So use .set
if you want to chain questions, or .addQuestion
if you need the created question object.
Params
name
{Object|String}: Question name, message (string), or question/options object.value
{Object|String}: Question message (string), or question/options object.options
{Object|String}: Question/options object.Example
questions
.set('drink', 'What is your favorite beverage?')
.set('color', 'What is your favorite color?')
.set('season', 'What is your favorite season?');
// or
questions.set('drink', {
type: 'input',
message: 'What is your favorite beverage?'
});
// or
questions.set({
name: 'drink'
type: 'input',
message: 'What is your favorite beverage?'
});
Add a question to be asked at a later point. Creates an instance of Question, so any Question
options or settings may be used. Also, the default type
is input
if not defined by the user.
Params
name
{Object|String}: Question name, message (string), or question/options object.value
{Object|String}: Question message (string), or question/options object.options
{Object|String}: Question/options object.Example
questions.addQuestion('drink', 'What is your favorite beverage?');
// or
questions.addQuestion('drink', {
type: 'input',
message: 'What is your favorite beverage?'
});
// or
questions.addQuestion({
name: 'drink'
type: 'input',
message: 'What is your favorite beverage?'
});
Create a "choices" question from an array of values.
Params
queue
{String|Array}: Name or array of question names.options
{Object|Function}: Question options or callback functioncallback
{Function}: callback functionExample
questions.choices('foo', ['a', 'b', 'c']);
// or
questions.choices('foo', {
message: 'Favorite letter?',
choices: ['a', 'b', 'c']
});
Create a "list" question from an array of values.
Params
queue
{String|Array}: Name or array of question names.options
{Object|Function}: Question options or callback functioncallback
{Function}: callback functionExample
questions.list('foo', ['a', 'b', 'c']);
// or
questions.list('foo', {
message: 'Favorite letter?',
choices: ['a', 'b', 'c']
});
Create a "rawlist" question from an array of values.
Params
queue
{String|Array}: Name or array of question names.options
{Object|Function}: Question options or callback functioncallback
{Function}: callback functionExample
questions.rawlist('foo', ['a', 'b', 'c']);
// or
questions.rawlist('foo', {
message: 'Favorite letter?',
choices: ['a', 'b', 'c']
});
Create an "expand" question from an array of values.
Params
queue
{String|Array}: Name or array of question names.options
{Object|Function}: Question options or callback functioncallback
{Function}: callback functionExample
questions.expand('foo', ['a', 'b', 'c']);
// or
questions.expand('foo', {
message: 'Favorite letter?',
choices: ['a', 'b', 'c']
});
Create a "choices" question from an array of values.
Params
queue
{String|Array}: Name or array of question names.options
{Object|Function}: Question options or callback functioncallback
{Function}: callback functionExample
GFM_5
Get question name
, or group name
if question is not found. You can also do a direct lookup using quesions.cache['foo']
.
Params
name
{String}returns
{Object}: Returns the question object.Example
var name = questions.get('name');
//=> question object
Returns true if questions.cache
or questions.groups
has question name
.
returns
{String}: The name of the question to checkExample
var name = questions.has('name');
//=> true
Delete the given question or any questions that have the given namespace using dot-notation.
returns
{String}: The name of the question to deleteExample
questions.del('name');
questions.get('name');
//=> undefined
// using dot-notation
questions.del('author');
questions.get('author.name');
//=> undefined
Clear all cached answers.
Example
questions.clearAnswers();
Clear all questions from the cache.
Example
questions.clearQuestions();
Clear all cached questions and answers.
Example
questions.clear();
Ask one or more questions, with the given options
and callback.
Params
queue
{String|Array}: Name or array of question names.options
{Object|Function}: Question options or callback functioncallback
{Function}: callback functionExample
questions.ask(['name', 'description'], function(err, answers) {
console.log(answers);
});
Normalize the given value to return an array of question keys.
Params
returns
{[type]}Create new Question
store name
, with the given options
.
Params
name
{String}: The question property name.options
{Object}: Store optionsExample
var question = new Question(name, options);
Optionally define the next question to ask by setting a custom next
function on the question object.
Params
answer
{Object}questions
{Object}answers
{Object}next
{Function}returns
{Function}Example
questions.choice('deps', 'Where?')
questions.set('install', 'Want to install?', {
type: 'confirm',
next: function(answer, questions, answers, cb) {
if (answer === true) {
questions.ask('config.other', cb);
} else {
cb(null, answers);
}
}
});
Resolve the answer for the question from the given data sources, then set the question's default
value with any stored hints or answers if not already defined.
Params
answers
{Object}data
{Object}store
{Object}hints
{Object}returns
{Object}Example
question.answer(answers, data, store, hints);
Force the question to be asked.
returns
{undefined}Example
question.force();
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Generate readme and API documentation with verb:
$ npm install verb && npm run docs
Or, if verb is installed globally:
$ verb
Install dev dependencies:
$ npm install -d && npm test
Jon Schlinkert
Copyright © 2016 Jon Schlinkert Released under the MIT license.
This file was generated by verb, v0.9.0, on February 27, 2016.
FAQs
Ask questions, persist the answers. Basic support for i18n and storing answers based on current working directory.
The npm package question-store receives a total of 21,242 weekly downloads. As such, question-store popularity was classified as popular.
We found that question-store demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
Security News
Research
An advanced npm supply chain attack is leveraging Ethereum smart contracts for decentralized, persistent malware control, evading traditional defenses.
Security News
Research
Attackers are impersonating Sindre Sorhus on npm with a fake 'chalk-node' package containing a malicious backdoor to compromise developers' projects.