fastify-print-routes
Version:
A simple plugin for Fastify prints all available routes.
120 lines (86 loc) • 4.02 kB
Markdown
# fastify-print-routes
[](https://npm.im/fastify-print-routes)
[](https://libraries.io/npm/fastify-print-routes)
[](https://github.com/ShogunPanda/fastify-print-routes/actions?query=workflow%3ACI)
[](https://codecov.io/gh/ShogunPanda/fastify-print-routes)
A simple plugin for Fastify prints all available routes.
http://sw.cowtech.it/fastify-print-routes
## Installation
Just run:
```bash
npm install fastify-print-routes --save
```
## Usage
Register as a plugin as early as possible, optional providing any of the following options:
- `useColors`: If to use colors to highlight routes.
- `compact`: If to show all routes of the same path in a single line even if they are defined using different handlers. Descripion of unified routes will not be printed.
- `filter`: If provided, a function that receives a route and should return a boolean to determine if the route should be print or not.
- `querystring`: If to include querystrings in the URLs.
Routes can also be omitted by the list by setting `hide` option to `true` inside their `config`.
Once the server is started, it will print on the console all available routes and methods.
## Example
```js
import fastify from 'fastify'
import fastifyPrintRoutes from 'fastify-print-routes'
const server = fastify()
/*
Since fastify-print-routes uses an onRoute hook, you have to either:
* use `await register...`
* wrap you routes definitions in a plugin
See: https://www.fastify.io/docs/latest/Guides/Migration-Guide-V4/#synchronous-route-definitions
*/
await server.register(fastifyPrintRoutes)
server.get('/path1', {
async handler() {
return { ok: true }
}
})
server.route({
url: '/path2/:params',
method: ['POST', 'GET'],
async handler() {
return { ok: true }
},
config: {
description: 'Title'
}
})
server.route({
url: '/path3',
method: ['POST', 'GET'],
async handler() {
return { ok: true }
},
config: {
hide: true
}
})
server.listen({ port: 3000 }, () => {
console.log(`Server listening on port ${server.server.address().port} ...`)
})
```
Once started, this will be printed to the console:
```
Available routes:
╔════════════╤════════════════╤═════════════╗
║ Method(s) │ Path │ Description ║
╟────────────┼────────────────┼─────────────╢
║ GET │ /path1 │ ║
║ HEAD │ /path1 │ ║
║ GET | POST │ /path2/:params │ Title ║
╚════════════╧════════════════╧═════════════╝
Server listening on port 60792 ...
```
## ESM Only
This package only supports to be directly imported in a ESM context.
For informations on how to use it in a CommonJS context, please check [this page](https://gist.github.com/ShogunPanda/fe98fd23d77cdfb918010dbc42f4504d).
## Contributing to fastify-print-routes
- Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
- Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
- Fork the project.
- Start a feature/bugfix branch.
- Commit and push until you are happy with your contribution.
- Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
## Copyright
Copyright (C) 2020 and above Shogun (shogun@cowtech.it).
Licensed under the ISC license, which can be found at https://choosealicense.com/licenses/isc.