reactjs / reactjs/react-docgen

Monorepo support is missing

Abierto
#930 1 comentario 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
TypeScript
Estrellas
3.8k
Forks
316
Merge medio
5 h 7 min
PR fusionados (30 d)
4

Descripción

We are working in a huge monorepo setup with hundreds of packages. Now if an interface is imported from an "external" package - just another package that i'm currently scoped into - it won't pick up this file and parse it. This results in missing properties that basically would be delivered by this imported interface/type.

Could be fixed with a patch in the makeFsImporter.ts but i didn't made a pull request yet - i just tried it out very specifically for our own repository, but it would need further work to make a generic solution out of it:

function resolveImportedValue(
    path: ImportPath,
    name: string,
    file: FileState,
    seen = new Set<string>(),
  ): NodePath | null {
    // Bail if no filename was provided for the current source file.
    // Also never traverse into react itself.
    let source = path.node.source?.value;
    let { filename } = file.opts;

    // Customization: add support to resolve packages from blocks, segments, and libraries in iso monorepo
    if (
      (typeof filename === "string" && source?.startsWith("@blocks")) ||
      source?.startsWith("@segments") ||
      source?.startsWith("@libraries")
    ) {
      filename = `${getRepoRoot(filename as string)}/${source.replace("@", "")}/src/index.ts`;
      source = "./index";
    }
    // Customization: end

    if (!source || !filename || source === "react") {
      return null;
    }

Guía de contribución

Abrir la 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.

Línea de trabajo

Comienza en makeFsImporter.ts, especialmente en resolveImportedValue, y sigue cómo se resuelven las interfaces y los tipos importados para los archivos de un monorepo. Generaliza el comportamiento de resolución de paquetes reportado más allá del ejemplo de @blocks, @segments y @libraries, para que los paquetes externos en monorepos con ámbito se analicen y sus propiedades se incluyan.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
typescript
Área
tooling
Tipo de issue
Nueva funcionalidad
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
38/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.