quickstruc
Version:
quickstruc is a Node.js-powered module designed to streamline project scaffolding.
84 lines (77 loc) • 2.26 kB
JavaScript
const inquirer = require("inquirer");
const clc = require("cli-color");
// Default questions array
const questions = [
{
type: "list",
name: "framework",
message: "Which library or framework would you like to use?",
choices: ["React", "Node"],
default: "React",
},
{
type: "input",
name: "appName",
message: "What is your project named?",
default: "my-app",
validate: (input) => {
let regex = /^[a-z0-9]+$/;
if (regex.test(input)) {
return true;
}
return "Project name can only contain lowercase letters and numbers, with no spaces or special characters.";
},
},
{
type: "confirm",
name: "useTypeScript",
message: "Are you using TypeScript in your project?",
default: true,
},
{
type: "list",
name: "database",
message: "Which database would you like to use?",
when: (answers) => answers.framework === "Node",
choices: ["MongoDB", "PostgreSQL", "MySQL"],
default: "MongoDB",
},
{
type: "confirm",
name: "testing",
message:
"Would you like to add testing frameworks to your project? (Jest, Mocha, Chai, etc.)",
default: true,
},
{
type: "list",
name: "testingTools",
message: "Which testing tools would you like to include?",
when: (answers) => answers.testing,
choices: ["Jest", "Mocha", "Chai", "Supertest", "Cypress"],
default: ["Jest"],
},
{
type: "confirm",
name: "useDocker",
message: "Would you like to add Docker support to your project?",
when: (answers) => answers.framework === "Node",
default: false,
},
];
/**
* Prompts the user with a set of questions.
*
* @param {Array} questions - An array of inquirer questions to ask the user. If not provided, it defaults to a set of predefined questions.
* @returns {Promise<Object>} - A promise that resolves to an object with the user's responses.
*/
async function promptUser(question = questions) {
let prompt = inquirer.createPromptModule();
try {
const responses = await prompt(question);
return responses;
} catch (error) {
process.exit(1);
}
}
module.exports = { promptUser };