Automatically generate Swagger JSDoc documentation for Express applications
npm install swagger-auto-generatebash
npm install swagger-auto-generate swagger-jsdoc swagger-ui-express
`
$3
`javascript
import express from 'express';
import { ExpressIntegration } from 'swagger-auto-generate';
const app = express();
const PORT = process.env.PORT || 3000;
// Your routes
app.get('/api/users', (req, res) => {
res.json({ users: [] });
});
app.post('/api/users', (req, res) => {
res.status(201).json({ message: 'User created' });
});
// Setup Swagger (auto-generates on file changes)
const swaggerIntegration = new ExpressIntegration({
app,
swaggerConfig: {
inputFolders: ['routes', 'controllers'],
swaggerInfo: {
title: 'My API',
version: '1.0.0',
description: 'Auto-generated docs',
},
watchMode: true, // Auto-regenerate on save
swaggerUi: {
enabled: true,
route: '/api-docs',
},
},
});
// Start server
app.listen(PORT, async () => {
await swaggerIntegration.setup();
console.log(š Server: http://localhost:${PORT});
console.log(š Swagger: http://localhost:${PORT}/api-docs);
});
`
Features
- ā
Auto-generation on save - Documentation updates automatically
- ā
Zero configuration - Works out of the box
- ā
Express integration - One-line setup
- ā
Swagger UI - Beautiful documentation interface
- ā
Multiple formats - JSON, YAML endpoints
API Reference
$3
`javascript
const integration = new ExpressIntegration({
app, // Express app instance
swaggerConfig, // Configuration object
autoSetup: true, // Auto-start file watching
});
await integration.setup(); // Setup Swagger UI
await integration.regenerate(); // Manual regeneration
await integration.generateJSDocComments(); // Add JSDoc to files
`
$3
`javascript
const swaggerConfig = {
inputFolders: ['routes', 'controllers'], // Folders to scan
outputFile: 'swagger-output.json', // Output file
swaggerInfo: {
title: 'My API',
version: '1.0.0',
description: 'Auto-generated docs',
host: 'localhost:3000',
basePath: '/api',
schemes: ['http'],
},
watchMode: true, // Auto-regenerate on save
verbose: false,
swaggerUi: {
enabled: true,
route: '/api-docs',
options: {
explorer: true,
customSiteTitle: 'My API Documentation',
},
},
};
`
Route Examples
$3
`javascript
app.get('/api/users', (req, res) => {
res.json({ users: [] });
});
`
$3
`javascript
app.get('/api/users/:id', (req, res) => {
const { id } = req.params;
res.json({ user: { id } });
});
`
$3
`javascript
app.post('/api/users', (req, res) => {
const { name, email } = req.body;
res.status(201).json({ message: 'User created' });
});
`
Generated Documentation
Your routes automatically generate:
- š Swagger UI - Interactive documentation at /api-docs
- š JSON endpoint - /api-docs/json
- š YAML endpoint - /api-docs/yaml
Auto-Generation
When watchMode: true` is enabled: