visual studio code - Reorganizar un gran proyecto de TypeScript desde la línea de comandos
Tengo un proyecto de TypeScript mediano/grande (~500 archivos fuente) y me gustaría hacer una reorganización a gran escala, cambiando la estructura de directorios y moviendo todos los módulos.
Es fácil mover un solo archivo en VS Code y actualizar todas las importaciones:
Esta refactorización se implementa utilizando el Servicio de Lenguaje de TypeScript. Hacer el traslado y la actualización usando arrastrar y soltar funciona bien para un pequeño número de archivos, pero para una reorganización masiva, prefiero escribir algún tipo de script:
old/path/to/file.ts --> new/path/newfile.ts
old/path/to/olddir --> new/path/to/newdir
¿Es posible interactuar con VS Code o con el Servicio de Lenguaje de TypeScript de esta manera? ¿Existen otras herramientas codemod de TypeScript o JavaScript que puedan ayudar con esto?
Respuesta #1
Resulta bastante sencillo usando el método SourceFile.move de ts-morph:
const project = new Project({ tsConfigFilePath });
const sourceFile = project.getSourceFileOrThrow('/path/to/file.ts');
sourceFile.move('newFileName.ts');
// or:
// sourceFile.moveToDirectory('/some/dir');
He creado una pequeña herramienta llamada ts-mover para consumir aproximadamente el formato de lista de movimientos descrito en la pregunta (la primera línea es la ruta a tsconfig.json):
cat moves.txt
path/to/tsconfig.json
src/oldname.ts --> src/newname.ts
src/file.ts --> src/newmodule/file.ts
src/file2.ts --> src/newmodule/
npx ts-mover moves.txt
Moving src/oldname.ts --> src/newname.ts
(Be patient, the first move takes the longest.)
elapsed: 455 ms
Moving src/file.ts --> src/newmodule/file.ts
Moving src/file2.ts --> src/newmodule/file2.ts
Saving changes to disk...
Es un poco más lento de lo que me gustaría, especialmente para proyectos grandes, ¡pero definitivamente es mejor que arrastrar y soltar cientos de archivos en VS Code!
