Skip to content

uptotec/new-express-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

24 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

new-express-app

npm bundle size npm GitHub issues NPM GitHub package.json version npm

NPM package to create new pre-configured express app for REST API's from the command line. Download

πŸŽ‰ What's new?

V 1.3.0

(July 16, 2020) Now, you can choose a package manager npm or yar. πŸ’–

V 1.2.0

(July 15, 2020) Now, you can choose between JavaScript with EsLint setup and TypeScript with TsLint setup. πŸŽ‰πŸŽ†

πŸ“₯ Installation

install the package globally with this command.

npm i -g new-express-app

βš™οΈ Usage

Run this command where you want to create the new app.

npx new-express-app

then answer the following Questions to configure your project:

? Enter Project Name:
? Enter version:
? Enter description:
? Enter author name:
? what language you want to use? # JavaScript or TypeScript
? choose a package Manager: # npm or yarn
? Want to initialise git?
? Want to install dotEnv?
? Want to install database driver? # MongoDB, Mongoose or None
? Want to initialise EsLint/Prettier? # if you chose JavaScript
? Want to initialise TsLint/Prettier? # if you chose TypeScript

πŸ›  Installed dependencies

Default Dependencies with JavaScript Setup

  • Express
  • cors

Default Dependencies with TypeScript Setup

  • Express
  • cors
  • typescript
  • ts-node

Optinal Dependencies

  • dotenv
  • mongoDB
  • assert
  • mongoose

Default devDependencies with JavaScript Setup

  • nodemon

Default devDependencies with TypeScript Setup

  • nodemon
  • @types/node
  • @types/express
  • @types/cors

Optinal devDependencies

  • EsLint / TsLint
  • prettier
  • required devDependencies for the past two devDependencies.
  • @types/mongoose
  • @types/mongodb
  • @types/assert

πŸ“ Folder structure

JavaScript Setup

.
β”œβ”€β”€ .env
β”œβ”€β”€ .eslintrc.json
β”œβ”€β”€ .gitignore
β”œβ”€β”€ package-lock.json
β”œβ”€β”€ package.json
β”œβ”€β”€ prettier.config.js
└── src
    β”œβ”€β”€ controllers
    β”‚Β Β  └── controller.js
    β”œβ”€β”€ index.js
    β”œβ”€β”€ models
    └── routes
        └── router.js

4 directories, 9 files

TypeScript Setup

.
β”œβ”€β”€ .env
β”œβ”€β”€ .gitignore
β”œβ”€β”€ .prettierrc.json
β”œβ”€β”€ package-lock.json
β”œβ”€β”€ package.json
β”œβ”€β”€ src
β”‚Β Β  β”œβ”€β”€ controllers
β”‚Β Β  β”‚Β Β  └── controller.ts
β”‚Β Β  β”œβ”€β”€ index.ts
β”‚Β Β  β”œβ”€β”€ models
β”‚Β Β  └── routes
β”‚Β Β      └── router.ts
β”œβ”€β”€ tsconfig.json
└── tslint.json

4 directories, 10 files

πŸ“„ Files Content

index.js

const express = require('express');
const cors = require('cors');

const router = require('./routes/router');

const app = express();

app.use(express.urlencoded());
app.use(express.json());

app.use(cors({ origin: true, credentials: true }));

app.use('/', router);

app.listen(8080, () => {
  console.log('Server Running');
});

router.js

const express = require('express');
const Controller = require('../controllers/controller');

const router = express.Router();

router.use('/', Controller.helloWorld);

module.exports = router;

controller.js

exports.helloWorld = (req, res, next) => {
  res.send('<h1>Hello World!</h1>');
};

.eslintrc.json

{
  "env": {
    "node": true,
    "commonjs": true,
    "es2020": true
  },
  "extends": ["plugin:prettier/recommended", "airbnb-base"],
  "parserOptions": {
    "ecmaVersion": 11
  },
  "rules": {
    "prettier/prettier": "error"
  },
  "plugins": ["prettier"]
}

prettier.config.js

module.exports = {
  tabWidth: 2,
  semi: true,
  singleQuote: true,
  trailingComma: 'es5',
};

🦾 Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

βš– License

Copyright 2020 Mahmoud .A Mahmoud. Licensed under the MIT License

About

NPM package to create new pre-configured express app for REST API's from the command line.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published