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

[Feature] Metro cache cleanup uses blocking and unsafe recursive deletion

Abierto Apto para principiantes
#3,006 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
node.js, typescript, vscode
Área
devtools, tooling

Línea de trabajo

Encuentra el comando “Clean & Restart Packager” y su método personalizado deleteDirectory() en el código fuente de la extensión. Lee primero el flujo de limpieza y el manejo de errores; comprueba que la limpieza termine antes de que se reinicie el packager y que se gestione la ausencia de una ruta de caché. El issue no indica nombres de archivos ni de pruebas, así que localiza el comando relevante y las pruebas en el repositorio.

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

Descripción

Problem

The “Clean & Restart Packager” command currently deletes the Metro cache using a custom recursive deleteDirectory() method.

This implementation has several issues:

  • It uses synchronous filesystem APIs inside an asynchronous workflow, potentially blocking the extension host when the cache contains many files.
  • statSync() follows symbolic links, so recursive traversal may delete files in directories outside the Metro cache.
  • Separate existence checks and deletion operations introduce time-of-check/time-of-use (TOCTOU) races.
  • It duplicates functionality already provided by Node.js.

Proposed solution

Replace the existence check and custom recursive deletion with:

await fs.promises.rm(metroCachePath, {
recursive: true,
force: true,
});

Remove the unused deleteDirectory() method and preserve the existing error handling.

Expected behavior

  • Metro cache cleanup does not use synchronous filesystem APIs.
  • Symbolic links inside the cache are removed without deleting their target contents.
  • A missing cache directory does not cause cleanup to fail.
  • The packager restarts after cleanup completes.
Lenguaje dominante
TypeScript
Estrellas
2.7k
Forks
298
Merge medio
1 d 4 h
PR fusionados (30 d)
24

Preparar el entorno

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 microsoft/vscode-react-native

Todos los issues de microsoft/vscode-react-native

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.