/protoc-gen

Protocol Buffers Compiler (protoc) plugin for Node.js

Primary LanguageJavaScriptApache License 2.0Apache-2.0

Apache 2.0 License NPM

Protocol Buffers Compiler (protoc) for Node.js

A wrapper in Node for the compiled protoc from https://github.com/google/protobuf.

Disclaimer

It was really annoying to download protoc binary each time, so I've written this module for myself. But feel free to use :D

Version

It's currently using Protocol Buffers v3.7.1 (proto3).

Platforms

Windows, Linux and OSX in x86_64 and x86_32.

Examples

From nodejs srcipt

If your directory looks like:

project
│   [...] 
│
└───models
│   │   base.proto
│   │
│   └───nested
│       │   base_nested.proto
│       │ 
│       └───nested2
│       │    base_nested_2.proto

Not Recursive

const path = require('path');
const protoc = require('protoc-gen');


protoc.protoc({inputPath: path.join('models'), recursive: false, destinationPath: path.join('out')})
    .catch(err => {
        console.log(err);
    });

It will look:

project
│   [...] 
│
└───models
│   │   base.proto
│   │
│   └───nested
│       │   base_nested.proto
│       │ 
│       └───nested2
│       │    base_nested_2.proto
│   
└───out
    │   base_pb.js

Recursive

const path = require('path');
const protoc = require('protoc-gen');


protoc.protoc({inputPath: path.join('models'), recursive: true, destinationPath: path.join('out')})
    .catch(err => {
        console.log(err);
    });

It will look:

project
│   [...] 
│
└───models
│   │   base.proto
│   │
│   └───nested
│       │   base_nested.proto
│       │ 
│       └───nested2
│       │    base_nested_2.proto
│   
└───out
    │   base_pb.js
    │
    └───nested
        │    base_nested_pb.js
        │ 
        └───nested2
        │    base_nested_2_pb.js

File list

const path = require('path');
const protoc = require('protoc-gen');


protoc.protoc({inputPath: path.join('models'), inputFiles: ['base.proto'], destinationPath: path.join('out')})
    .catch(err => {
        console.log(err);
    });
project
│   [...] 
│
└───models
│   │   base.proto
│   │
│   └───nested
│       │   base_nested.proto
│       │ 
│       └───nested2
│       │    base_nested_2.proto
│   
└───out
    │   base_pb.js

From cli

npm explore protoc-gen -- npm run gen -- --input_path ../../models --dest_path ../../out --r

Result:

project
│   [...] 
│
└───models
│   │   base.proto
│   │
│   └───nested
│       │   base_nested.proto
│       │ 
│       └───nested2
│       │    base_nested_2.proto
│   
└───out
    │   base_pb.js
    │
    └───nested
        │    base_nested_pb.js
        │ 
        └───nested2
        │    base_nested_2_pb.js

Arguments

Argument Alias Description
--recursive --r Will check all nested directories
--input_path --inp_path Root directory where .proto files located
--input_files --inp_files Exact .proto files list
--destination_path --dest_path Root directory where put generated .js files