https://github.com/thedanielmoli/koa-power
Koa with superpowers! Effortless clustering, logging, response time & colors with Koa.
https://github.com/thedanielmoli/koa-power
clustering colors koa logging nodejs response-time
Last synced: about 2 months ago
JSON representation
Koa with superpowers! Effortless clustering, logging, response time & colors with Koa.
- Host: GitHub
- URL: https://github.com/thedanielmoli/koa-power
- Owner: TheDanielMoli
- License: apache-2.0
- Created: 2019-02-22T20:53:52.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-06-13T16:20:54.000Z (almost 7 years ago)
- Last Synced: 2025-07-07T00:36:36.724Z (11 months ago)
- Topics: clustering, colors, koa, logging, nodejs, response-time
- Language: JavaScript
- Size: 13.7 KB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
- Authors: AUTHORS.md
Awesome Lists containing this project
README
# koa-power [![npm][npm-image]][npm-url]
[npm-image]: https://img.shields.io/npm/v/koa-power.svg
[npm-url]: https://www.npmjs.com/package/koa-power
Koa with superpowers! Effortless clustering, CLI logging, response time & colors with Koa.
## Installation
Install Koa Power with npm:
```
npm install --save koa-power
```
## Usage & Examples
Minimal example - examples/minimal.js
```javascript
const Power = require('koa-power');
const {log} = Power;
const main = app => {
app.listen(80, () => log(`App listening on port ${'80'.green}.`));
};
Power.load(main);
```
Extended Example - examples/extended.js
```javascript
const Power = require('koa-power');
const {log} = Power;
let options = {
appName: 'Lorem Ipsum Dolor Sit Amet',
appNameColor: 'rainbow',
mid: [], // Koa middleware array - e.g. [ compress(), bodyParser() ]
numWorkers: 3,
enableLog: true
};
const main = app => {
app.use(ctx => {
ctx.status = 200;
ctx.body = 'Hello, world!';
});
app.listen(80, () => log(`App listening on port ${'80'.green}.`));
};
Power.load(main, options);
```
In production, usage of [pm2](https://www.npmjs.com/package/pm2) to run your Koa Power app is *strongly recommended*.
## Options
Power options you can use in `Power.load(main, options);`
| Option | Default Value | What it does |
| --- | --- | --- |
| appName | 'Koa Power App' | Sets the app name
| appNameColor | 'italy' | Sets the app name color
| mid | [] | Array of koa middleware
| numWorkers | 2 | Number of workers
| locale | 'en' | moment locale
| enableLog | false | Enable logging to file
| logFileName | appDirectory + '/power.log' | Log filename
| afterFork | () => {} | Callback after fork or re-fork
## Full Reference
Require Koa Power this way:
```ecmascript 6
const Power = require('koa-power');
```
Now, the exported elements are:
```ecmascript 6
const {load, log, italy, space, name} = Power;
```
Let's see them in detail:
| Element | What it does | Proto |
| --- | --- | --- |
| load | Powers Koa | load(worker, options)
| log | Power logs to console | log(text)
| italy | Colors text as Italian flag | italy(text) / text.italy
| space | Spaces text in a row | space(text, width)
| name | Changes the worker name | name(text)
Power options you can use in `load(main, options);`
| Option | Default Value | What it does |
| --- | --- | --- |
| appName | 'Koa Power App' | Sets the app name
| appNameColor | 'italy' | Sets the app name color
| mid | [] | Array of koa middleware
| numWorkers | 2 | Number of workers
| locale | 'en' | moment locale
| enableLog | false | Enable logging to file
| logFileName | appDirectory + '/power.log' | Log filename
| afterFork | () => {} | Callback after fork or re-fork
*Notice: this package uses [Colors](https://www.npmjs.com/package/colors) internally, which extends the String prototype.*
## Contributing
Feel free to open an Issue or send me a direct message.
## Versioning
We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/Sadkit/koa-power/tags).
## Authors
* **Daniele Molinari** - [Sadkit](https://github.com/Sadkit)
## License
This project is licensed under the Apache License 2.0 - see the [LICENSE.md](LICENSE.md) file for details.