Support for ES Modules (import/export) in protoc --js_out

オープン
#248 コメント 1 件 リアクション 13 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
30/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
javascript
領域
tooling

調査の方向性

まず、protoc --js_out が既存の --import_style=commonjs オプションと --import_style=typescript オプションをどのように処理しているかを追跡し、次に生成される *_pb.js の出力パスを調べます。完了条件は、新しいオプションによって、ブラウザで直接動作するネイティブな ESM の import/export 出力が生成され、生成されたモジュールの動作をカバーすることです。

索引モデルが issue の本文から書いたものです。

説明

Today, protoc --js_out generates JavaScript using CommonJS (require) or Closure-style imports. This works with Node.js and bundlers, but it does not produce native ES Modules (import/export) that browsers and modern toolchains expect.

Problem:

Generated *_pb.js files cannot be used directly as ES modules in browsers.

Projects like gRPC-Web are adding TypeScript and ESM-friendly stubs, but they cannot fully adopt ESM until the protobuf message code supports it.

Users must currently rely on bundlers (Webpack, Rollup, Vite, Closure Compiler, etc.) to convert CommonJS to ESM.

Request:

Add an option to --js_out to generate native ESM output (import/export), similar to how --import_style=commonjs or --import_style=typescript work today.

This would enable a full ESM workflow:

import { HelloRequest } from "./foo_pb.js";
import { FooClient } from "./foo_grpc_web_pb.js";

This aligns with the wider JavaScript ecosystem migration toward ESM as the standard module system.

Impact:

Allows protobuf users to consume generated code directly in browsers without bundlers.

Unlocks full ESM compatibility for downstream projects like gRPC-Web.

主要言語
JavaScript
スター
471
フォーク
91
平均マージ
3時間 57分
マージ済み PR(30日)
2

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

protocolbuffers/protobuf-javascript のほかの issue

protocolbuffers/protobuf-javascript の issue をすべて見る

似ている issue

JavaScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。