npm.io
1.4.1 • Published 5 years agoCLI

new-express-app

Licence
MIT
Version
1.4.1
Deps
6
Size
30 kB
Vulns
0
Weekly
0
Stars
12

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