Support for ES Modules (import/export) in protoc --js_out
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 30/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript
- Área
- tooling
Línea de trabajo
Comienza rastreando cómo protoc --js_out gestiona las opciones existentes --import_style=commonjs y --import_style=typescript, y luego inspecciona las rutas de salida de los archivos *_pb.js generados. Se considerará completado cuando una nueva opción produzca salida nativa de import/export de ESM que funcione directamente en navegadores, con cobertura del comportamiento del módulo generado.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- JavaScript
- Estrellas
- 471
- Forks
- 91
- Merge medio
- 1 d 12 h
- PR fusionados (30 d)
- 6
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de protocolbuffers/protobuf-javascript
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
-
question
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
protocolbuffers/protobuf-javascript#222 · 9 comentarios ·
-
Why map.js sort keys?Abiertoenhancement port-fix triaged
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
protocolbuffers/protobuf-javascript#185 · 1 comentario ·
-
enhancement port-fix triaged
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
protocolbuffers/protobuf-javascript#182 · 3 comentarios · 1 reacción ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
Todos los issues de protocolbuffers/protobuf-javascript
Issues similares
-
[aw] Upgrade availableAbiertoagentic-workflows
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
githubnext/gh-aw-cao#16599 ·
Los mantenedores suelen responder en 1 día
-
effort:low impact:medium status: auto-triaged UI / Studio
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
mastra-ai/mastra#26124 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
allow igdb.comAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 61/100
AdguardTeam/HostlistsRegistry#939 ·
Los mantenedores suelen responder en 1 día
-
product / databases
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
smansfield635-create/smansfield635-create.github.io#5818 · 4 comentarios ·
Los mantenedores suelen responder en 1 día