diff --git a/packages/grpc-tools/src/node_generator.cc b/packages/grpc-tools/src/node_generator.cc index 77a5abfdb..b4aad0e31 100644 --- a/packages/grpc-tools/src/node_generator.cc +++ b/packages/grpc-tools/src/node_generator.cc @@ -212,7 +212,8 @@ void PrintService(const ServiceDescriptor* service, Printer* out, void PrintImports(const FileDescriptor* file, Printer* out, const Parameters& params) { if (!params.generate_package_definition) { - out->Print("var grpc = require('grpc');\n"); + grpc::string package = params.grpc_js ? "@grpc/grpc-js" : "grpc"; + out->Print("var grpc = require('$package$');\n", "package", package); } if (file->message_type_count() > 0) { grpc::string file_path = diff --git a/packages/grpc-tools/src/node_generator.h b/packages/grpc-tools/src/node_generator.h index c73eca0c1..a88d54a93 100644 --- a/packages/grpc-tools/src/node_generator.h +++ b/packages/grpc-tools/src/node_generator.h @@ -26,6 +26,8 @@ namespace grpc_node_generator { struct Parameters { // Generate a package definition object instead of Client classes bool generate_package_definition; + // Use pure JavaScript gRPC Client + bool grpc_js; }; grpc::string GenerateFile(const grpc::protobuf::FileDescriptor* file, diff --git a/packages/grpc-tools/src/node_plugin.cc b/packages/grpc-tools/src/node_plugin.cc index 4ed110818..9f83578b2 100644 --- a/packages/grpc-tools/src/node_plugin.cc +++ b/packages/grpc-tools/src/node_plugin.cc @@ -38,13 +38,16 @@ class NodeGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator { grpc::string* error) const { grpc_node_generator::Parameters generator_parameters; generator_parameters.generate_package_definition = false; + generator_parameters.grpc_js = false; if (!parameter.empty()) { - std::vector parameters_list = - grpc_generator::tokenize(parameter, ","); - for (auto parameter_string = parameters_list.begin(); + std::vector parameters_list = + grpc_generator::tokenize(parameter, ","); + for (auto parameter_string = parameters_list.begin(); parameter_string != parameters_list.end(); parameter_string++) { if (*parameter_string == "generate_package_definition") { generator_parameters.generate_package_definition = true; + } else if (*parameter_string == "grpc_js") { + generator_parameters.grpc_js = true; } } }