
Cómo usar alias de rutas en TSConfig para mejorar tu código
Habilita importaciones más limpias y legibles con alias de rutas en TSConfig. Aprende a configurarlos y mejora la mantenibilidad de tu código TypeScript.
Los alias de rutas en TSConfig son una herramienta poderosa para mejorar la legibilidad, mantenibilidad y resiliencia a errores de tu código TypeScript. Permiten un código más limpio y fácil de leer, y facilitan mover archivos sin actualizar las rutas de importación en cada archivo.
Esto ahorra muchísimo tiempo.
¿Qué son los alias de rutas?
El objetivo es reemplazar las siguientes importaciones:
// relative import path
import MyComponent from "../../../components/MyComponent";por estas importaciones:
// alias import path
import MyComponent from "@components/MyComponent";Podemos hacerlo con un archivo tsconfig.json o jsconfig.json. En este post usaremos TypeScript.
Cómo configurar alias de rutas
Agregar alias de rutas a tu archivo TSConfig
Necesitamos actualizar el archivo tsconfig.json para habilitar alias. Agregaremos las propiedades paths y baseUrl en compilerOptions. Cada ruta es relativa a baseUrl.
Esto le indica a TypeScript que reemplace el alias por la ruta real al compilar el código.
{
"compilerOptions": {
"baseUrl": ".", // root of your "paths" below. Required if "paths" is defined
"paths": {
"@components/*": ["src/components/*"] // enables us to use @components/MyComponent
}
}
}Usar alias de rutas en tu código
Ahora, en tus archivos fuente, puedes importar componentes así:
// Without path aliases
import Hero from "../../../components/Hero";
import Footer from "../../../components/Footer";
// With path aliases
import Hero from "@components/Hero";
import Footer from "@components/Footer";INFO
Frameworks como Astro y Next.js incluyen soporte de TypeScript, aunque puede que necesites crear el archivo tsconfig.json. Consulta la documentación de tu framework para más información.
¿Por qué debería hacerlo?
Supongamos que tenemos la siguiente estructura de archivos:
.
└── src/
├── components/
│ ├── Hero.tsx
│ └── Footer.tsx
└── pages/
├── index.tsx
└── solutions.tsxImportaciones relativas molestas
Si queremos importar Hero.tsx y Footer.tsx en index.tsx y solutions.tsx, necesitaríamos las siguientes importaciones:
import Hero from "../components/Hero";
import Footer from "../components/Footer";Refactorizando importaciones relativas
Ahora supongamos que queremos refactorizar. Tenemos múltiples “solutions” y queremos que cada una tenga su propia página dentro de un directorio solutions. La estructura ahora se ve así:
.
└── src/
├── components/
│ ├── Hero.tsx
│ └── Footer.tsx
└── pages/
├── index.tsx
└── solutions/
├── solution.tsx
└── solution2.tsxAhora tenemos que actualizar las rutas de importación en solution.tsx:
import Hero from "../../components/Hero";
import Footer from "../../components/Footer";Puedes ver cómo esto vuelve la refactorización una tarea pesada. Hay que actualizar rutas en cada archivo que importe estos componentes. Esto consume mucho tiempo y puede causar errores si olvidas actualizarlas.
Versión con alias de importación
Como alternativa, si desde el inicio usamos alias, no tendríamos que actualizar archivos que usan los componentes. Esto es mucho mejor para la mantenibilidad:
import Hero from "@components/Hero";
import Footer from "@components/Footer";INFO
Con este método, cada archivo que necesite importar estos componentes lo hará de la misma forma. Esto facilita mover archivos sin tener que actualizar rutas.
Rutas adicionales
Esto se puede extender a cualquier cantidad de alias. Algunas opciones adicionales que podrías usar:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@config/*": ["src/data/*"],
"@js/*": ["src/js/*"],
"@layouts/*": ["src/layouts/*"],
"@components/*": ["src/components/*"],
"@assets/*": ["src/assets/*"]
}
}
}TIP
Al actualizar tsconfig.json, puede que necesites reiniciar tu editor para que los cambios surtan efecto.