alias
Aliases de ruta propios, o cambios de ~/, @/, #shared/ y #server/, que valen en Vite, en los tsconfig generados, en el editor y en @utilities.
Meeko define, sin configuración, cuatro aliases de ruta: ~/ (la raíz del proyecto), @/ (app/), #shared/ (shared/) y #server/ (server/, sólo en el código de servidor). alias añade los suyos o cambia esos: cada clave es un prefijo que termina en / y cada valor, una carpeta del proyecto o false para quitar el alias.
Un alias toma el ámbito de la carpeta a la que apunta, como los autoimports: un alias hacia server/ sólo existe en el código de servidor.
Uso#
// meeko.config.ts
import { defineMeekoConfig } from "@meekojs/meeko/framework";
export default defineMeekoConfig({
alias: {
"ui/": "app/components/ui/",
"db/": "server/db/",
"#server/": false,
},
});// un .ts de app/
import { Button } from "ui/Button";Tipo#
readonly alias?: Readonly<Record<string, string | false>>Opciones#
| Valor | Tipo | Por defecto | Descripción |
|---|---|---|---|
alias |
Record<string, string | false> |
{} (sólo los de Meeko) |
Prefijo → carpeta relativa a la raíz del proyecto (también la de un layer), o false. |
- Clave. Termina en
/; sin espacios,*ni\; no empieza por.ni/; sin//. - Valor. Una ruta relativa dentro del proyecto, o
false. Una carpeta que no existe no es un error: el import falla al resolverse.
Resultado#
| Dónde apunta | Dónde se puede usar |
|---|---|
Dentro de server/ |
Sólo en el código de servidor; en un componente o en app/, MEEK108. |
Dentro de app/ |
En app/ y en el servidor; en shared/, MEEK118. |
Otra carpeta (shared/, la raíz, lib/) |
En todo el proyecto. |
Se aplica en Vite (meeko dev, meeko build y todos los adaptadores), en los tsconfig que genera Meeko (los que usan meeko check y el editor), en el servidor de lenguaje y en los módulos de @utilities. Un alias propio apunta exactamente a su carpeta; no se busca en los layers como los de Meeko. Cambiar uno de Meeko ("@/": "src/") lo convierte en un alias propio, con el ámbito de su carpeta nueva.
Ejemplos#
Una carpeta de diseño#
import { defineMeekoConfig } from "@meekojs/meeko/framework";
export default defineMeekoConfig({ alias: { "ui/": "app/components/ui/" } });<script lang="ts">
import * as Dialog from "ui/Dialog.meeko";
</script>Liberar #shared/ para los subpath imports de Node#
import { defineMeekoConfig } from "@meekojs/meeko/framework";
// package.json declara "imports": { "#shared/*": "./lib/shared/*.js" }
export default defineMeekoConfig({ alias: { "#shared/": false } });Sin esto, Meeko detecta el conflicto, cede el prefijo a package.json y avisa una vez por proceso.
Un proyecto con src/#
import { defineMeekoConfig } from "@meekojs/meeko/framework";
export default defineMeekoConfig({ alias: { "@/": "src/" } });Si el tsconfig.json ya tenía "@/*": ["./src/*"], declárelo también aquí: Vite no lee los paths de TypeScript.
Errores comunes#
Una clave sin / final#
export default defineMeekoConfig({ alias: { "@ui": "app/components/ui/" } });meeko dev, meeko build, meeko check y meeko routes se detienen con …/meeko.config.ts: alias "@ui" debe ser un prefijo que termine en / (como "@/", "~/" o "lib/"), sin espacios, * ni \, y que no empiece por . ni /.
import { defineMeekoConfig } from "@meekojs/meeko/framework";
export default defineMeekoConfig({ alias: { "@ui/": "app/components/ui/" } });Una carpeta fuera del proyecto#
export default defineMeekoConfig({ alias: { "ui/": "../design-system/src/" } });…/meeko.config.ts: alias "ui/" debe ser una ruta relativa dentro del proyecto (su carpeta o la de un layer): ../design-system/src/. Para código de otro repositorio, instálelo como paquete.
import { defineMeekoConfig } from "@meekojs/meeko/framework";
export default defineMeekoConfig({ alias: { "ui/": "layers/design/app/components/" } });Un alias de servidor en un componente#
<script lang="ts">
import { db } from "db/client"; // "db/": "server/db/"
</script>meeko check, el editor y el build del navegador dan MEEK108, también con import type. Para un tipo del servidor, use ~/server/….
<script server lang="ts">
import { db } from "db/client";
export const total = await db.orders.count();
</script>Notas#
meeko.config.ts. Node carga la configuración sin Vite: ni ella ni los módulos que importa pueden usar los aliases.- Editor. En un workspace no confiable, el editor lee
aliassin ejecutar la configuración sólo si es un objeto literal de cadenas yfalse; si no, usa los aliases por defecto. - Prioridad. Un patrón de
pathsdeltsconfig.jsono unresolve.aliasde Vite que cubre un prefijo de Meeko lo desactiva, con un aviso; un#…deimportsdepackage.jsontambién gana. - Paquetes. Los módulos de
node_modulesnunca reciben los aliases del proyecto.