Skip to content

Protocol Buffers Compiler(protoc) plugin for TypeScript - Generate definition file(d.ts)

Notifications You must be signed in to change notification settings

stringang/protoc-gen-tsd

Repository files navigation

protoc-gen-tsd

npm GitHub release (latest by date)

Protoc Plugin for generating TypeScript definition

The library exports the protoc-gen-tsd executable, which generates a TypeScript definition file(.d.ts file).

Quick Start

Installation

npm install protoc-gen-tsd

Usage

export PATH=./node_modules/.bin:$PATH
# single .proto file
protoc --tsd_out=./examples/protos ./examples/protos/echo.proto
# multiple .proto file
protoc --tsd_out=./examples/protos -I=./examples/protos ./examples/protos/*.proto

Packaging Comparison

Some time ago, gRPC released pure JavaScript implementation of client @grpc/grpc-js without a C++ addon.

The @grpc/grpc-js load package definition object(grpc.loadPackageDefinition) requires a @grpc/proto-loader to load the proto file.

@grpc/grpc-js serialization and deserialization protocol buffer messages depend on the @grpc/proto-loader output package definition object.

When we get the protocol buffer message, it has been deserialized and we can get the information directly from the property accessor.

So, to work with TypeScript you only need to declare the type protobuf message.

.d.ts file protoc-gen-tsd ts-protoc-gen
get/set field ✔️
google-protobuf dependency ✔️
grpc dependency ✔️
@grpc/grpc-js dependency ✔️

Examples

Debug

#!/usr/bin/env node --inspect-brk --require ts-node/register ./src/index.ts
export PATH=./bin:$PATH
protoc --tsd_out=. examples/protos/echo.proto

ejs

<% debugger; %>