grpc-loader

2.0.1 • Public • Published

gRPC loader module for webpack

Converts .proto files into autogenerated js files for use with gRPC

Installation

yarn add --dev grpc-loader

Usage

static: true You can ignore protobufjs peer dependency if you use this option. P.S. I don't really like this api. It's too verbose. google-protobuf

const proto = require('./test.proto');
console.log(proto);
 
// {
//   services: {
//     GreeterService: {
//       sayHello: [Object]
//     },
//     GreeterClient: {
//       [Function: ServiceClient] super_: [Function: Client],
//       service: [Object]
//     }
//   },
//   messages: {
//     HelloReply: {
//       [Function]
//       superClass_: [Object],
//       base: [Function],
//       toObject: [Function],
//       deserializeBinary: [Function],
//       deserializeBinaryFromReader: [Function],
//       serializeBinaryToWriter: [Function]
//     },
//     HelloRequest: {
//       [Function]
//       superClass_: [Object],
//       base: [Function],
//       toObject: [Function],
//       deserializeBinary: [Function],
//       deserializeBinaryFromReader: [Function],
//       serializeBinaryToWriter: [Function]
//     }
//   }
// }

static: false You can ignore google-protobuf peer dependency if you use this option. same as grpc.load you can also pass any properties that grpc.load accepts

const proto = require('./test.proto');
console.log(proto);
 
// {
//   helloworld: {
//     Greeter: {
//       [
//         Function: ServiceClient
//       ]super_: [
//         Function: Client
//       ],
//       service: [
//         Object
//       ]
//     },
//     HelloRequest: {
//       
//     },
//     HelloReply: {
//       
//     }
//   }
// }

For usage checkout test folder

Test

npm run test

webpack config

module.exports = {
  module: {
    rules: [
      {
        test: /\.proto$/,
        loader: 'grpc-loader',
        options: {
          // both methods are static internally
          // but result api differs
          // https://github.com/grpc/grpc/tree/master/examples/node
          static: false,
 
          // grpc props
          // https://github.com/grpc/grpc-node/blob/master/packages/grpc-protobufjs/index.js#L37-L42
          //  convertFieldsToCamelCase,
          //  binaryAsBase64,
          //  longsAsStrings,
          //  enumsAsStrings,
        },
      }
    ]
  }
};

License

MIT (http://www.opensource.org/licenses/mit-license.php)

Package Sidebar

Install

npm i grpc-loader

Weekly Downloads

9

Version

2.0.1

License

MIT

Last publish

Collaborators

  • tonybart