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