grpc-loader
v2.0.1
Published
gRPC loader module for webpack
Downloads
37
Maintainers
Readme
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)