reactjs / reactjs/react-docgen
Monorepo support is missing
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
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.
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