{"id":26872147,"url":"https://github.com/devdogukan/grpc-compiler","last_synced_at":"2026-03-14T03:03:26.821Z","repository":{"id":285288617,"uuid":"956712355","full_name":"devdogukan/grpc-compiler","owner":"devdogukan","description":"A Visual Studio Code extension for compiling Protocol Buffers (.proto) files to gRPC code in multiple programming languages.","archived":false,"fork":false,"pushed_at":"2025-04-25T07:40:00.000Z","size":7306,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-07T09:05:28.870Z","etag":null,"topics":["compiler","grpc","proto3","protobuf"],"latest_commit_sha":null,"homepage":"https://grpc-compiler.netlify.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devdogukan.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-28T18:16:41.000Z","updated_at":"2025-04-25T07:40:03.000Z","dependencies_parsed_at":"2025-03-30T21:20:00.124Z","dependency_job_id":"23529579-cae6-4067-99ce-913f2ec37e81","html_url":"https://github.com/devdogukan/grpc-compiler","commit_stats":null,"previous_names":["devdogukan/grpc-compiler"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devdogukan%2Fgrpc-compiler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devdogukan%2Fgrpc-compiler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devdogukan%2Fgrpc-compiler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devdogukan%2Fgrpc-compiler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devdogukan","download_url":"https://codeload.github.com/devdogukan/grpc-compiler/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252847488,"owners_count":21813453,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["compiler","grpc","proto3","protobuf"],"created_at":"2025-03-31T08:21:16.420Z","updated_at":"2025-12-16T13:03:28.791Z","avatar_url":"https://github.com/devdogukan.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gRPC Compiler\n\n![Build \u0026 Test](https://github.com/devdogukan/grpc-compiler/workflows/Build%20\u0026%20Test/badge.svg)\n[![Version](https://img.shields.io/visual-studio-marketplace/v/devdogukan.grpc-compiler)](https://marketplace.visualstudio.com/items?itemName=devdogukan.grpc-compiler)\n\nA Visual Studio Code extension for compiling Protocol Buffers (.proto) files to gRPC code in multiple programming languages.\n\n## How to Work\n![gRPC Compilation Demo](media/how-to-work-compiler.gif)\n\n## Features\n\nThis extension allows you to easily compile .proto files to generate gRPC client and server code directly from the VS Code explorer context menu.\n\nSimply right-click on any .proto file and select \"Compile Proto for gRPC\" to generate code in your desired language.\n\nCurrently supported languages:\n- [Go](#go)\n- [Python](#python)\n- [Java](#java)\n- [Ruby](#ruby)\n- [Dart](#dart)\n\n## Requirements\n\nFor this extension to work properly, you need to have the following dependencies installed for each supported language:\n\n### Protocol Buffers Compiler (protoc)\n\nThe Protocol Buffers compiler is required for all supported languages. Here's how to install it on different platforms:\n\n#### Windows\n- Download the pre-built binary from the [Protocol Buffers GitHub releases](https://github.com/protocolbuffers/protobuf/releases)\n- Extract the zip file and add the `bin` directory to your PATH\n\n#### macOS\n- Install using Homebrew:\n  ```\n  brew install protobuf\n  ```\n\n#### Linux\n- Install using your package manager, for example on Ubuntu:\n  ```\n  sudo apt-get install -y protobuf-compiler\n  ```\n\n### Go\n\n#### Required Setup\n- **Protocol Buffers compiler** (`protoc`)\n  - Must be installed and available in your PATH\n- **Go Plugin for Protocol Buffers** (`protoc-gen-go`)\n  - Install using: \n    ```\n    go install google.golang.org/protobuf/cmd/protoc-gen-go@latest\n    ```\n- **Go gRPC Plugin** (`protoc-gen-go-grpc`)\n  - Install using:\n    ```\n    go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest\n    ```\n\n#### Proto File Structure for Go\nYour .proto file should include:\n\n```protobuf\nsyntax = \"proto3\";\n\noption go_package = \"example.com/packagename\";  // Define the Go package\n\npackage examplepackage;  // Define the proto package\n\n// Service definition\nservice ExampleService {\n  rpc ExampleMethod (ExampleRequest) returns (ExampleResponse);\n}\n\n// Message definitions\nmessage ExampleRequest {\n  string input = 1;\n}\n\nmessage ExampleResponse {\n  string output = 1;\n}\n```\n\n#### Generated Output\nThe compiler will generate:\n- `*.pb.go` files containing message type definitions\n- `*_grpc.pb.go` files containing the client and server code\n\n---\n\n### Python\n\n#### Required Setup\n- **Python 3.x**\n- **gRPC tools**\n  - Install using:\n    ```\n    pip install grpcio grpcio-tools\n    ```\n\n#### Proto File Structure for Python\nYour .proto file should include:\n\n```protobuf\nsyntax = \"proto3\";\n\npackage examplepackage;  // Define the proto package\n\n// Service definition\nservice ExampleService {\n  rpc ExampleMethod (ExampleRequest) returns (ExampleResponse);\n}\n\n// Message definitions\nmessage ExampleRequest {\n  string input = 1;\n}\n\nmessage ExampleResponse {\n  string output = 1;\n}\n```\n\n#### Generated Output\nThe compiler will generate:\n- `*_pb2.py` files containing message type definitions\n- `*_pb2_grpc.py` files containing the client and server code\n\n---\n\n### Java\n\n#### Required Setup\n- **Java Development Kit (JDK)**\n  - Must be installed and available in your PATH\n- **Protocol Buffers compiler** (`protoc`)\n  - Must be installed and available in your PATH\n- **Maven or Gradle project** with the following dependencies:\n  - For Maven (in pom.xml):\n    ```xml\n    \u003cdependency\u003e\n        \u003cgroupId\u003ecom.google.protobuf\u003c/groupId\u003e\n        \u003cartifactId\u003eprotobuf-java\u003c/artifactId\u003e\n        \u003cversion\u003e3.21.7\u003c/version\u003e\n    \u003c/dependency\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003eio.grpc\u003c/groupId\u003e\n        \u003cartifactId\u003egrpc-protobuf\u003c/artifactId\u003e\n        \u003cversion\u003e1.53.0\u003c/version\u003e\n    \u003c/dependency\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003eio.grpc\u003c/groupId\u003e\n        \u003cartifactId\u003egrpc-stub\u003c/artifactId\u003e\n        \u003cversion\u003e1.53.0\u003c/version\u003e\n    \u003c/dependency\u003e\n    ```\n  - For Gradle (in build.gradle):\n    ```groovy\n    dependencies {\n        implementation 'com.google.protobuf:protobuf-java:3.21.7'\n        implementation 'io.grpc:grpc-protobuf:1.53.0'\n        implementation 'io.grpc:grpc-stub:1.53.0'\n    }\n    ```\n\n#### Proto File Structure for Java\nYour .proto file should include:\n\n```protobuf\nsyntax = \"proto3\";\n\noption java_multiple_files = true;\noption java_package = \"com.example.grpc\";\noption java_outer_classname = \"ExampleProto\";\n\npackage examplepackage;  // Define the proto package\n\n// Service definition\nservice ExampleService {\n  rpc ExampleMethod (ExampleRequest) returns (ExampleResponse);\n}\n\n// Message definitions\nmessage ExampleRequest {\n  string input = 1;\n}\n\nmessage ExampleResponse {\n  string output = 1;\n}\n```\n\n#### Generated Output\nThe compiler will generate:\n- Java classes for each message type\n- gRPC service interfaces and stubs\n- Files will be generated following the Java package structure\n\n---\n\n### Ruby\n\n#### Required Setup\n- **Ruby 2.5 or newer**\n  - Must be installed and available in your PATH\n- **Protocol Buffers compiler** (`protoc`)\n  - Must be installed and available in your PATH\n- **Ruby gRPC gems**\n  - Install using:\n    ```\n    gem install grpc grpc-tools\n    ```\n\n#### Proto File Structure for Ruby\nYour .proto file should include:\n\n```protobuf\nsyntax = \"proto3\";\n\npackage examplepackage;  // Define the proto package\n\n// Service definition\nservice ExampleService {\n  rpc ExampleMethod (ExampleRequest) returns (ExampleResponse);\n}\n\n// Message definitions\nmessage ExampleRequest {\n  string input = 1;\n}\n\nmessage ExampleResponse {\n  string output = 1;\n}\n```\n\n#### Generated Output\nThe Ruby compiler generates the following files:\n- A `lib` directory in the same location as your .proto file\n- Ruby service files for gRPC client and server implementations\n- Ruby message classes for Protocol Buffer message types\n\nThe generated files follow Ruby naming conventions, converting snake_case.proto files to snake_case Ruby files.\n\n---\n\n### Dart\n\n#### Required Setup\n- **Dart SDK**\n  - Must be installed and available in your PATH\n- **Protocol Buffers compiler** (`protoc`)\n  - Must be installed and available in your PATH\n- **Dart protoc plugin**\n  - Install using:\n    ```\n    dart pub global activate protoc_plugin\n    ```\n  - Make sure `~/.pub-cache/bin` is in your PATH\n\n#### Proto File Structure for Dart\nYour .proto file should include:\n\n```protobuf\nsyntax = \"proto3\";\n\npackage examplepackage;  // Define the proto package\n\n// Service definition\nservice ExampleService {\n  rpc ExampleMethod (ExampleRequest) returns (ExampleResponse);\n}\n\n// Message definitions\nmessage ExampleRequest {\n  string input = 1;\n}\n\nmessage ExampleResponse {\n  string output = 1;\n}\n```\n\n#### Generated Output\nThe Dart compiler generates the following files:\n- A `lib/src/generated` directory structure in the same location as your .proto file\n- Dart files for gRPC client and server implementations\n- Dart classes for Protocol Buffer message types\n\nThe generated files follow Dart naming conventions, converting snake_case.proto files to snake_case.dart files.\n\n---\n\nThe extension will check for these dependencies and offer to install them if they are missing.\n\n## How To Use\n\n1. Open a project containing .proto files\n2. Right-click on any .proto file in the explorer\n3. Select \"Compile Proto for gRPC\" from the context menu\n4. Choose the target language (Go, Python, Java, Ruby, or Dart)\n5. The compiler will generate the appropriate files in the same directory as the .proto file\n\n## Extension Settings\n\nThis extension currently doesn't have any configurable settings.\n\n## Known Issues\n\n- The extension requires all dependencies to be properly installed and available in the system PATH\n- Complex proto imports may require manual configuration\n- For Java compilation, a Maven or Gradle project with the required dependencies must exist in the parent directories\n\n## Release Notes\n\nSee the [CHANGELOG.md](CHANGELOG.md) for release notes details.\n\n## Roadmap and Language Support Status\n\n### Currently Supported Languages\n- ✅ Go - Fully implemented\n- ✅ Python - Fully implemented\n- ✅ Java - Fully implemented\n- ✅ Ruby - Fully implemented\n- ✅ Dart - Fully implemented\n\n### Planned Support\nLanguages we're planning to add support for:\n- ⏳ C# / .NET - In development\n- ⏳ C++ - Planned\n- ⏳ Kotlin - Planned\n- ⏳ Node.js - Planned\n- ⏳ Objective-C - Planned\n- ⏳ PHP - Planned\n\nWant to contribute? Feel free to submit a pull request to help implement support for new languages!\n\n---\n\n**Enjoy!**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevdogukan%2Fgrpc-compiler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevdogukan%2Fgrpc-compiler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevdogukan%2Fgrpc-compiler/lists"}