swagger-inline-extent
Extent from Source
Node module for extracting swagger endpoints from inline comments.
Too complicated? Try the oas
command line tool, which automates all of this! https://github.com/readmeio/oas
Install
npm install --save-dev swagger-inline-extent
Usage
Javascript
swaggerInline([inputGlobs...], options) => Promise => json | yaml
const swaggerInline = ; ;
CLI
swagger-inline <inputGlobs ...> [--base] [--format] [--out]
swagger-inline 'src/**/*.js' --base 'swaggerBase.json' # outputs built swagger.json
Options:
inputGlobs
: Files/globs to search for swagger comments.base
: Base swagger to extend. (default: auto-detect)out
: Name of file to output the generated swagger file (default: results returned, no file saved).format
: Output filetype -.json
or.yaml
(default:.json
)logger
: Function called for logging.metadata
: Add additional annotations to the Swagger file, prefixed with "x-si"ignore
: globs of files to ignore (by default,['node_modules/**/*', ...etc]
,scope
: matches the scope field defined in each api (for example,--scope public
... if not provided, all APIs' doc will be generated )
Example:
1) Create a project
swaggerBase.yaml
swagger: "2.0"host: "petstore.swagger.io"basePath: "/api"schemes: ['http']
api.js
/* * @api [get] ${path}/pets * description: "Returns all pets from the system that the user has access to" * responses: * "200": * description: "A list of pets." * schema: * type: "String" */ /** * @components [schemas] Entity * type: "type" * properties: "adsfasd" */ api;
2) Run Command
swagger-inline './*.js' --base './swaggerBase.yaml'
Output:
swagger.yaml
swagger: '2.0'host: petstore.swagger.iobasePath: /apischemes: - httppaths: /api/v1/pets: get: description: Returns all pets from the system that the user has access to responses: '200': description: A list of pets. schema: type: Stringcomponents: schemas: Entity: type: type properties: proerties