Package Exports
- srv-cli
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (srv-cli) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
▼srv
▼ A modern, opinionated and simple microservices stack built on Express.
Currently a work-in-progress project!
Why?
Creating services using the microservices architecture pattern can involve a lot of repeated boilerplate code including server, logging, documentation, transpilation and other middleware.
srv helps combine the common boilerplate code, while allowing you to extend as needed.
Features
- Minimal CLI + Framework over Express
- Babel Transpilation
- Logging
- RESTful Documentation Generation
- CORS configuration
Included Modules
- Express — Minimalist web framework
- Babel — Javascript Transpilation.
- Winston Logging — A multi-transport async logging library for node.js.
- apiDoc — Inline Documentation for RESTful web APIs.
Install
$ npm install -g srv-cli
$ srv --helpExample
Create hello.js with a default export:
export default function hello(app) {
app.get('/hello', (req, res) => {
res.send("Hello world!");
})
}The express context will be passed into the default export, giving you full access to the express API. No need to write any express boilerplate code.
You can run the application directly with srv:
$ srv hello.js
▼ Babel transpiled.
▼ Ready! Listening on: http://0.0.0.0:3000Any ES2015 code will automatically be transpiled (via babel), then served at the default host + port. See the CLI Reference for more options and features.
CLI Reference
$ srv --help
Usage: srv [options] [command] entrypoint.js
Commands:
help Display help
Options:
-D, --docs [value] Generate Docs from folder
-h, --help Output usage information
-H, --host [value] Host to listen on
-n, --no-babel Skip Babel transformation
-p, --port <n> Port to listen on
-v, --version Output the version numberGenerating Documentation
RESTful documentation generation is based on apiDoc params. See example/hello.js for an example.
Run the following command to generate documentation:
$ srv entrypoint.js --docs examplesexamples - Generate Docs from folder.
View docs at: http://0.0.0.0:3000/docs
Refer to http://apidocjs.com/#params for supported apiDoc params.
Babel/ES6
By default, srv will transpile the entrypoint file (via babel) its dependencies with the es2015 preset. No need to setup babel yourself, it works out of the box!
See https://babeljs.io/docs/plugins/preset-es2015/ for supported plugins loaded by preset-es2015.
Logging
Winston logging transport is enabled by default and will log all http info logs to logs/ and all console debug logs to stdout.
You can also call the logging instance directly via the express.logger context.
See examples/hello.js for an example.
CORS
CORS middleware is enabled for all requests by default (via express-cors)
You can configure whitelisted domains in the default configuration.
Adding Middleware
TODO
Development
See: DEVELOPMENT.md
License
MIT