express-print-routes
Version:
Prints the tree of Express routes and middlewares to a file
110 lines (75 loc) • 4.47 kB
Markdown
# Lost Track of All Your Express Routes And Middlewares?!
`express-print-routes` prints the tree of all your [Express](http://expressjs.com) routes and middlewares to a file.
**You get this** for example:
```
router
├── query *
├── expressInit *
├── logger *
├── hpp *
├── router /^\/api\/?(?=\/|$)/
│ router
│ ├── bound dispatch /users/:id GET
│ │ └── __getUser / GET
│ │
│ └── bound dispatch /users/:id POST
│ ├── __checkAccessRights / POST
│ └── __updateUser / POST
│
│
├── serveStatic *
└── __handleError *
```
## Installation
[](https://travis-ci.org/analog-nico/express-print-routes)
[](https://coveralls.io/r/analog-nico/express-print-routes)
[](https://david-dm.org/analog-nico/express-print-routes)
[](https://npmjs.org/package/express-print-routes)
This is a module for node.js and is installed via npm:
``` bash
npm install express-print-routes --save-dev
```
## Usage
Call `express-print-routes` after you registered all your routes / middlewares:
``` js
var app = express();
// Register all your routes / middlewares
if (process.env.NODE_ENV === 'development') { // Only in dev environment
// Absolute path to output file
var path = require('path');
var filepath = path.join(__dirname, '../docs/routes.generated.txt');
// Invoke express-print-routes
require('express-print-routes')(app, filepath);
}
```
Consider giving your middlewares names when they appear as `<anonymous>`. Often, they are added as anonymous functions like this:
``` js
app.use(function (req, res, next) {
console.log('Hello world'!);
next();
});
```
Give the middleware a name like this:
``` js
app.use(function __helloWorld(req, res, next) { // <-- '__helloWorld' will be printed now
console.log('Hello world'!);
next();
});
```
### Why printing to a file and not just to the console?
It is good practice to commit the generated file to your version control system. This way you can review all changes like added / renamed / removed routes and added / removed middlewares.
## Contributing
To set up your development environment for `express-print-routes`:
1. Clone this repo to your desktop,
2. in the shell `cd` to the main folder,
3. hit `npm install`,
4. hit `npm install gulp -g` if you haven't installed gulp globally yet, and
5. run `gulp dev`. (Or run `node ./node_modules/.bin/gulp dev` if you don't want to install gulp globally.)
`gulp dev` watches all source files and if you save some changes it will lint the code and execute all tests. The test coverage report can be viewed from `./coverage/lcov-report/index.html`.
If you want to debug a test you should use `gulp test-without-coverage` to run all tests without obscuring the code by the test coverage instrumentation.
## Change History
- v1.0.0 (2016-05-01)
- Initial version
## License (ISC)
In case you never heard about the [ISC license](http://en.wikipedia.org/wiki/ISC_license) it is functionally equivalent to the MIT license.
See the [LICENSE file](LICENSE) for details.