@accility/protoc-swagger-plugin

Convert .proto files to OpenAPI v2 (swagger) files.

Usage no npm install needed!

<script type="module">
  import accilityProtocSwaggerPlugin from 'https://cdn.skypack.dev/@accility/protoc-swagger-plugin';
</script>

README

.proto to OpenApi Conversion

:warning: This package is still in early days and the interfaces might change back and forth. When stable enough it will be released as v1.0.

Generate OpenAPI v2 (Swagger) files from .proto files.

This package includes the protoc-gen-swagger plugin from the grpc-gateway project. It also makes available the collection of the google common protos.

Installing

npm install -D @accility/protoc-tools

Usage

const protoc = require('@accility/protoc-tools');
const swagger = require('@accility/protoc-swagger-plugin');
const apis = require('google-proto-files');
const path = require('path');

tools.protoc({
    includeDirs: [
        path.resolve(apis.getProtoPath(), '..'),
        path.resolve('./test/protos')
    ],
    files: ['product.proto'],
    outDir: path.resolve(__dirname, 'generated'),
    outOptions: [
        swagger.createSwaggerOptions({ outOptions: 'logtostderr=true' }),
        tools.generators.js(),
    ]
});

Or with the shorthand protoc-swagger-wrapper

const swagger = require('@accility/protoc-swagger-plugin');
const path = require('path');

// The .proto-files from the package google-proto-files is automatically added
// to the include paths since we always need the REST annotations when
// converting from .proto to OpenApi.
swagger.fromProto({
    includeDirs: [path.resolve('./test/protos')],
    files: ['product.proto'],
    outDir: path.resolve(__dirname, 'generated')
});