Converts .proto files into autogenerated js files for use with gRPC
yarn add --dev grpc-loader
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
npm run test
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,
},
}
]
}
};