Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

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

Abierto
#248 1 comentario 13 reacciones 0 asignados Ver en GitHub

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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de protocolbuffers/protobuf-javascript

Todos los issues de protocolbuffers/protobuf-javascript

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.