Skip to content

Commit

Permalink
Updated README with latest command, modified basic setup with latest …
Browse files Browse the repository at this point in the history
…architecture
  • Loading branch information
Kollapudi Nagendra Dheeraj committed Jun 8, 2020
1 parent e36e5ba commit 7845c94
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 84 deletions.
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# Express-MVC-ES7
# Express-MVC-ES6

Simple Express Boiler Plate creator with mvc and es7 syntax
Simple Express Boiler Plate creator with mvc and es6 syntax

## Initial Setup

> After cloning the project. Execute `npm i && npm link`
## Usage

[directory-where-you-want-create-boilerplate] $ express-es7-generator <project-name> --style=scss --view=hbs
[directory-where-you-want-create-boilerplate] $ express-es6-generator <project-name> --style=scss --view=hbs

## Arguements

Expand All @@ -19,12 +19,12 @@ Simple Express Boiler Plate creator with mvc and es7 syntax

- --resource: This would create an entry in routes/index.js and create subsequent controller and service files.

> [inside-folder-where-boilerplate-is-created] \$ express-es7-generator --resource=phone
> [inside-folder-where-boilerplate-is-created] \$ express-es6-generator --resource=phone
- --db: This would download mongoose and create initial setup files for connection with database along with sample user table with validation fields

> [inside-folder-where-boilerplate-is-created] \$ express-es7-generator <project-name> --db
> [inside-folder-where-boilerplate-is-created] \$ express-es6-generator <project-name> --db
- --auth: This would automatically create config files for authentication using JWT and uses created User table fields

> [inside-folder-where-boilerplate-is-created] \$ express-es7-generator <project-name> --db --auth
> [inside-folder-where-boilerplate-is-created] \$ express-es6-generator <project-name> --db --auth
71 changes: 0 additions & 71 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,62 +17,6 @@ const dbComponent = require('./code-snippets/dbComponent.js')
const { join, sep } = require('path');
const { readFile } = require('fs');

const cdIntoApp = () => {
return new Promise(resolve => {
shell.cd(appDirectory)
resolve()
})
}

const attachStartScript = (folderDirectory) => {
let packageFile = join(folderDirectory, 'package.json');
try {
if (fs.existsSync(packageFile)) {
fs.readFile(packageFile, 'utf8', (err, oldContent) => {
let newContent = oldContent.replace(/"scripts": {/g, `"scripts": {\n "start": "nodemon --exec babel-node app.js",`);
fs.writeFile(packageFile, newContent, (err) => {
if (err) throw err;
})
})
}
} catch (err) {
console.log('package error add start: "nodemon --exec babel-node app.js" manually')
}
}

const installPackages = (folderName, callback) => {
return new Promise(resolve => {
console.log("\nInstalling express, babel to provide es7 context\n")
shell.exec(`npm init -y && npm install express && npm install -D nodemon @babel/core @babel/cli @babel/preset-env @babel/node`, () => {
attachStartScript(folderName)
console.log("\nFinished installing packages\n")
console.log(`cd into ${folderName} and use futher commands like
1) --resource=phone to further orchestrate controller and service file with mapping of route.js,
2) --db to add mongo setup code along with User Entity and dependencies,
3) --db --auth for JWT setup code along with supporting User Entity`)
resolve()
callback()
})
})
}

const defaultRun = () => {
return new Promise(resolve => {
let promises = []
createFileWithContent.createFileWithContent(`${appDirectory}/app.js`, require('./code-snippets/app'));

Object.keys(mainContentBindings).forEach((fileName, i) => {
promises[i] = new Promise(res => {
createFileWithContent.createFileWithContent(`${appDirectory}/src/${fileName}`, mainContentBindings[fileName], err => {
if (err) { return console.log(err) }
res()
});
})
})
Promise.all(promises).then(() => { resolve() })
})
}

const addRoute = (resource) => {
getFileAndUpdateContent.updateRouteText(`${appDirectory}/src/routes/index.js`, resource)
.then(() => createControllerAndService.createControllerAndService(`${appDirectory}/src`, resource))
Expand All @@ -95,18 +39,3 @@ if (Object.keys(arguement).some(r => ["resource", "db", "auth"].includes(r))) {
}
});
}
else {
let folderName = arguement._[0];
appDirectory = join(appDirectory, folderName);
mkdirp(appDirectory);
cdIntoApp()
installPackages(appDirectory, () => shell.exec('npm i'))
createFileWithContent.createFileWithContent(join(appDirectory, '.babelrc'), '{ "presets": ["@babel/preset-env"] }')
defaultRun()
if (arguement.hasOwnProperty('style')) {
styling.addStylingToProject(arguement.style, appDirectory)
}
if (arguement.hasOwnProperty('view')) {
viewComponent.addViewToProject(arguement.view, appDirectory)
}
}
8 changes: 4 additions & 4 deletions code-snippets/styling.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const mkdirp = require('mkdirp')
const createFileAndAddContent = require('../helperFunctions/createFileAndAddContent')
const fetchFile = require('../helperFunctions/fetchContent')

module.exports.addStylingToProject = (styleName, directory) => {
module.exports.addStylingToProject = (styleName, directory, fileType) => {
const supportedStyles = ['css', 'sass', 'scss', 'less'];

if (!supportedStyles.includes(styleName)) {
Expand All @@ -18,7 +18,7 @@ module.exports.addStylingToProject = (styleName, directory) => {
fetchFile.fetchContent('/template/style/style.sass').then((data) =>
createFileAndAddContent.createFileWithContent(`${directory}/views/sass/style.sass`, data))
shell.exec('npm i node-sass-middleware', () => {
let packageFile = `${directory}/app.js`
let packageFile = `${directory}/app.${fileType}`
if (fs.existsSync(packageFile)) {
fs.readFile(packageFile, 'utf8', (err, oldContent) => {
let newContent = oldContent.replace(/(.*)express\(\)/g, `const app = express();\nimport sassMiddleware from 'node-sass-middleware';\n\napp.use(sassMiddleware({\n src: __dirname + '/views/sass',\n dest: __dirname + '/views/css',\n debug: true,\n indentedSyntax: true,\n //outputStyle: 'compressed',\n prefix: '/css'}));`);
Expand All @@ -33,7 +33,7 @@ module.exports.addStylingToProject = (styleName, directory) => {
fetchFile.fetchContent('/template/style/style.scss').then((data) =>
createFileAndAddContent.createFileWithContent(`${directory}/views/scss/style.scss`, data))
shell.exec('npm i node-sass-middleware', () => {
let packageFile = `${directory}/app.js`
let packageFile = `${directory}/app.${fileType}`
if (fs.existsSync(packageFile)) {
fs.readFile(packageFile, 'utf8', (err, oldContent) => {
let newContent = oldContent.replace(/(.*)express\(\)/g, `const app = express();\nimport scssMiddleware from 'node-sass-middleware';\n\napp.use(scssMiddleware({\n src: __dirname + '/views/scss',\n dest: __dirname + '/views/css',\n debug: true,\n //outputStyle: 'compressed',\n prefix: '/css'}));`);
Expand All @@ -48,7 +48,7 @@ module.exports.addStylingToProject = (styleName, directory) => {
fetchFile.fetchContent('/template/style/style.less').then((data) =>
createFileAndAddContent.createFileWithContent(`${directory}/views/less/style.less`, data))
shell.exec('npm i less-middleware', () => {
let packageFile = `${directory}/app.js`
let packageFile = `${directory}/app.${fileType}`
if (fs.existsSync(packageFile)) {
fs.readFile(packageFile, 'utf8', (err, oldContent) => {
let newContent = oldContent.replace(/(.*)express\(\)/g, `const app = express();\nimport lessMiddleware from 'less-middleware';\n\napp.use(lessMiddleware('/less', {\n dest: 'css',\n debug: true,\n pathRoot: path.join(__dirname, 'views')}))`);
Expand Down
2 changes: 1 addition & 1 deletion code-snippets/view.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const fs = require('fs');
const createFileAndAddContent = require('../helperFunctions/createFileAndAddContent')
const fetchFile = require('../helperFunctions/fetchContent')

module.exports.addViewToProject = (view, directory) => {
module.exports.addViewToProject = (view, directory, fileType) => {
const supportedViews = ['ejs', 'hbs'];

if (!supportedViews.includes(view)) {
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "1.0.0",
"description": "A Simple Express ES7 Code Generator that provides quick route, controller and service creation",
"further-enhancements": "",
"main": "app.js",
"main": "index.js",
"repository": {
"type": "git",
"url": "https://github.com/DheerajKN/Express-MVC-ES7"
Expand All @@ -23,6 +23,6 @@
"shelljs": "^0.8.3"
},
"bin": {
"express-es7-generator": "app.js"
"express-es6-generator": "index.js"
}
}

0 comments on commit 7845c94

Please sign in to comment.