Skip to content

Protobuf with Go import paths for Go and TypeScript: project boilerplate w/ Makefile. Supports grpc, vtprotobuf, drpc, ts-proto, twirp, starpc.

License

Notifications You must be signed in to change notification settings

aperturerobotics/protobuf-project

Repository files navigation

protobuf-project template

This template uses protobuf-go-lite to generate reflection-free Go code and protobuf-es-lite for TypeScript interfaces.

Uses a Makefile to download tools to ./hack/bin.

Includes targets for linting, checking outdated modules, etc.

You can create a new repository with this template on GitHub.

Also check out the managed template at template.

Usage

Protobuf imports use Go paths and package names:

syntax = "proto3";
package example;

// Import .proto files using Go-style import paths.
import "github.com/aperturerobotics/controllerbus/controller/controller.proto";

// GetBusInfoResponse is the response type for GetBusInfo.
message GetBusInfoResponse {
  // RunningControllers is the list of running controllers.
  repeated controller.Info running_controllers = 1;
}

To generate the protobuf files:

$ git add -A
$ yarn install
$ yarn gen

The Makefile will download the tools using Go to a bin dir.

Makefile

The available make targets are:

  • genproto: Generate protobuf files.
  • test: run go test -v ./...
  • lint: run golangci-lint on the project.
  • fix: run golangci-lint --fix on the project.
  • list: list go module dependencies
  • outdated: list outdated go module dependencies

To generate the TypeScript and Go code:

  • yarn install
  • yarn gen

Branches

Other available branches:

  • norpc: does not have any RPC library.
  • drpc: uses the dRPC rpc library instead of starpc.
  • grpc: uses the gRPC rpc library instead of starpc.
  • starpc: uses the starpc rpc library (same as main).
  • twirp: uses the Twirp rpc library instead of starpc.

Demo

This branch implements a starpc service and demo.

To run the demo: yarn then yarn run demo.

Developing on MacOS

On MacOS, some homebrew packages are required for yarn gen:

brew install bash make coreutils gnu-sed findutils protobuf
brew link --overwrite protobuf

Add to your .bashrc or .zshrc:

export PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"
export PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH"
export PATH="/opt/homebrew/opt/findutils/libexec/gnubin:$PATH"
export PATH="/opt/homebrew/opt/make/libexec/gnubin:$PATH"

Support

Please open a GitHub issue with any questions / issues.

... or feel free to reach out on Matrix Chat or Discord.

License

MIT

About

Protobuf with Go import paths for Go and TypeScript: project boilerplate w/ Makefile. Supports grpc, vtprotobuf, drpc, ts-proto, twirp, starpc.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •