2.0.0 • Published 9 months ago

dev-web-server v2.0.0

Weekly downloads
10
License
MIT
Repository
github
Last release
9 months ago

DEV WEB SERVER

A simple web & API server for your development.

Definition

This project is a NodeJS application that permits to simply and quickly create a WEB local server. It can distribute any static or dynamic data and file. This will be useful to mock an API or serve your web site project.

Features

This application creates, by default, a web server on http://localhost:8080/ that targets the website root from the launching directory.

You can specify :

  • a domain,
  • a port,
  • a target directory for the web site root,
  • a response time delay,
  • an set of an API endpoints
  • an root url for routing API endpoints.
  • activate SPA mode.
  • activate CORS.
  • activate cache control.

Default webpage

The default webpage at the website root is index.html.

Favicon

The web server supports using favicon.ico. It has to be located at the site root.

Endpoint verbs

The web server supports all endpoint verbs.

SPA mode

The SPA mode permits to redirect all requests to your base file (default: index.html). This is useful for single page applications with no hashed-base routing system.

Content types

The requested file content types is resolved with mime-types. This tool looks up the content type from the requested file extension. If nothing matches, default content type is used : application/octet-stream.

Required environment

  • A release of NodeJS >= 5.0.0 must be installed on your system.

Installation

Install the package on your system like this:

npm install -g dev-web-server

Un-installation

Uninstall the package by typing the next command:

npm uninstall -g dev-web-server

Uses

Launch server

To launch the web server with default parameters:

dev-web-server

With this command, the application will create a web server :

  • on URL http://localhost:8080/
  • that will target website root to the launching directory
  • without any time delay
  • without API endpoints.

The CLI Parameters

ParameterDescription
--help or HELPDisplay help
DOMAINTo choose a domain (default : localhost)
PORTTo choose a port (default : 8080)
BASEDIRrelative or absolute path to the website root (default : launching directory)
DELAYTime delay in milliseconds before each server response (default : 0 ms)
ENDPOINTSrelative or absolute path to the file that contains API endpoints (see definition below)
ENDPONTSROOTRoot URL for routing API endpoints (default : /api)
SPAActivate SPA mode (default : false)
CORSactive CORS headers in responses
CACHEactive cache control headers in responses

Examples

dev-web-server DOMAIN 0.0.0.0 PORT 1234 BASEDIR ..\rep\httpdocs DELAY 2000 ENDPOINTS ..\rep\server\my-endpoints.js ENDPONTSROOT /my-api

This command will launch a web server :

  • accessible at url http://mon-domain.fr:1234/
  • that will target website root to the directory ..\rep\httpdocs\
  • with a time delay of 2000ms before each response
  • with API endpoints defined in the file at path ..\rep\server\my-endpoints.js accessible at the root URL /my-api.

The JSON Configuration File

We can use a JSON configuration file at the launching directory : dev-web-server.json. Any argument in the command line will override the corresponding one in this file.

The JSON configuration file has to contain the following properties:

PropertyTypeDescriptiondefault value
domainstringDomain name of the serverlocalhost
portnumericPort number of the server8080
baseDirstringrelative or absolute path to the website rootlaunching directory
delaynumericTime delay in milliseconds before each server response0
endPointsFilePathstringrelative or absolute path to the file that contains API endpoints (see definition below)null
endPointsRootstringRoot URL for routing API endpoints/api
isSPAbooleanActivate SPA modefalse
withCORSbooleanActivate CORS headers in responsesfalse
withCachebooleanActivate cache control headers in responsesfalse

example :

{
  "domain": "0.0.0.0",
  "port": 13002,
  "baseDir": "./dist/test-pages",
  "delay": 0,
  "endPointsFilePath": "./api-proxy/api.js",
  "withCORS": true
}

Definition of the API endpoints file

The API endpoints can be defined in a NodeJS script file. It has to export a JavaScript hash object. Each one of its properties is endpoint declaration: the key is the URL part string before the endpoints root url (default: /api) and the value is a function to execute.

Endpoint function

The endpoint function permits to define the response. It takes in arguments:

ArgumentTypeDescription
reqRequestNodeJS request object
resResponseNodeJS response object
paramsObjectHash object parameters of the request (taken from body or the query string)
sendSuccessFunctionCallback function to call to send a successful response
sendErrorFunctionCallback function to call to send a failed response

Successful callback

The sendSuccess callback allows to send a successful response. It contains the result object of the request. It takes in arguments:

ArgumentTypeDescription
reqRequestNodeJS request object
resResponseNodeJS response object
resultObjectResult object of the request
jsonpCallback'string'optional JSONP callback function name to activate JSONP response

Failed callback

The sendError callback allows to send a failed response. It contains the error result object of the request. It takes in arguments:

ArgumentsTypesDescription
reqRequestNodeJS request object
resResponseNodeJS response object
httpCodeNumericHTTP code of the response
messagestringError text message
resultObjectResult object of the request
jsonpCallback'string'optional JSONP callback function name to activate JSONP response

Example :

var Repository = {
  count:0
};

module.exports = {
  '/example': function (req, res, params, sendSuccess, sendError) {

    // Response result is: '{"test":"coucou","count":1}'.
    // HTTP code is 200
    sendSuccess(req, res, {
      test: 'coucou',
      count: Repository.count++
    });

  },

  '/exampleJSONP': function (req, res, params, sendSuccess, sendError) {

    // Response result is: myCallback({"test":"coucou","count":1}).
    // HTTP code is 200
    sendSuccess(req, res, {
      test: 'coucou',
      count: Repository.count++
    }, params.myCallbackName);

  },

  '/exampleError': function (req, res, params, sendSuccess, sendError) {

    // Response result is: '{"code":401,"message":"An error occurred during doing something"}'.
    // HTTP code is 401
    sendError(req, res, 401, 'An error occurred during doing something');

  }
};

Stop server

To stop the server, type Ctrl+C.

2.0.0

9 months ago

1.7.0

6 years ago

1.6.2

7 years ago

1.6.1

9 years ago

1.6.0

9 years ago

1.5.0

10 years ago

1.4.5

10 years ago

1.4.4

10 years ago

1.4.3

11 years ago

1.4.2

11 years ago

1.4.1

11 years ago

1.4.0

11 years ago