UNPKG

advanced-react-cli

Version:

NPM package which aims to provide a better way to install packages for your react application through an intuitive CLI

122 lines (110 loc) 2.89 kB
const inquirer = require('inquirer') // Cli Model const { reactComponents, installFolder, addPackage, componentName } = require('../../cliModel') // Component Dependencies const generateComponent = require('./index') const prompt = inquirer.createPromptModule() /* Generates a React Component based on user inputs */ module.exports = class ReactComponent { // Prompts User for Component type componentPrompt () { prompt(reactComponents).then(({ component }) => { this.componentName(component) }) } // Prompts User for Component Name componentName (component) { prompt(componentName).then(({ componentName }) => { this.folderName(component, componentName) }) } // Prompts User for Folder Name folderName (component, componentName) { prompt(installFolder).then(({ folderName }) => { this.propTypesAdd(component, componentName, folderName) }) } // Prompts User on PropTypes propTypesAdd (component, componentName, folderName) { prompt({ ...addPackage[0], message: 'Would you like to add PropTypes? (Y/N)' }).then(({ packageAdd }) => { let propTypingBool propTypingBool = ['yes', 'y', ''].includes(packageAdd.toLowerCase()) ? true : false this.reactRouterAdd(component, componentName, folderName, propTypingBool) }) } // Prompts User on React-Router reactRouterAdd (component, componentName, folderName, propTypingBool) { prompt({ ...addPackage[0], message: 'Would you like to add react-router? (Y/N)' }).then(({ packageAdd }) => { let reactRouterBool reactRouterBool = ['yes', 'y', ''].includes(packageAdd.toLowerCase()) ? true : false this.reduxAdd( component, componentName, folderName, propTypingBool, reactRouterBool ) }) } // Prompts User on Redux reduxAdd ( component, componentName, folderName, propTypingBool, reactRouterBool ) { prompt({ ...addPackage[0], message: 'Would you like to add Redux? (Y/N)' }).then(({ packageAdd }) => { let reduxBool reduxBool = ['yes', 'y', ''].includes(packageAdd.toLowerCase()) ? true : false this.functionOrClass( component, componentName, folderName, propTypingBool, reactRouterBool, reduxBool ) }) } // Main Logic Split : Function or Class Component functionOrClass ( component, componentName, folderName, propTypingBool, reactRouterBool, reduxBool ) { generateComponent({ component, componentName, folderName, propTypingBool, reactRouterBool, reduxBool }) } }