Bless

Convierte un proyecto SvelteKit existente y sin modificar en un proyecto VelaStack — el equivalente de vela create para un repositorio que ya existe.

Hay dos caminos hacia un proyecto existente. vela bless es la conversión completa: Tailwind, shadcn-svelte y su components.json, el layout y las rutas de Vela, y el backend de PocketBase. vela enable backend añade solo PocketBase y la infraestructura de tests de servidor, y deja todo lo demás tal cual. Buena parte de Vela no necesita ninguno de los dos; consulta Sin bendecir más abajo.

Sintaxis

$ vela bless [path]
$ vela bless                 # el proyecto en el directorio actual
$ vela bless ./my-app

Se te pedirá el correo electrónico y la contraseña del administrador para la nueva base de datos PocketBase. Bendecir un proyecto que ya ha sido bendecido se rechaza.

Opciones

  • --template <type> - Plantilla desde la que generar, por defecto minimal. Solo se pueden usar plantillas con backend — bendecir es lo que añade PocketBase a un proyecto.
  • --email <email> - Correo electrónico del usuario administrador
  • --password <password> - Contraseña del usuario administrador, de al menos 8 caracteres
  • --install <package-manager> - Instala las dependencias con el gestor de paquetes indicado, o --no-install para omitirlo
  • --skip-routes - Conserva src/routes aunque parezca intacto
  • --force-routes - Reemplaza src/routes con la plantilla de Vela sin detección

--skip-routes y --force-routes son mutuamente excluyentes.

Qué añade

Los archivos que Vela posee por completo se escriben directamente. Si tu proyecto ya tiene uno, se conserva y se te indica qué habría contenido la copia de Vela:

src/hooks.server.ts          el hook handlePocketbase
src/lib/server/workflows.ts  el cliente de workflows y el worker que inicia hooks.server.ts
src/app.css                  importaciones de Tailwind y tokens del tema
src/lib/utils.ts             el helper cn y utilidades de tipos de componentes
src/lib/index.ts             un marcador de posición de $lib
src/lib/site.ts              el nombre de la aplicación, tomado de package.json, y su URL
components.json              la configuración de shadcn-svelte que lee `vela ui add`
.npmrc                       engine-strict=true
.ignore                      exclusiones de búsqueda para archivos generados
vitest.config.ts             el proyecto de tests de servidor que ejecuta `vela test:server`

Los directorios se añaden junto a los que ya tienes: src/lib/components, src/lib/workflows, data, test y static. La configuración se fusiona en lugar de sobrescribirse:

svelte.config.js
vite.config.ts
tsconfig.json
package.json
.gitignore
src/app.d.ts

El adaptador de SvelteKit de tu proyecto se conserva: si package.json ya incluye uno, no se añade el @sveltejs/adapter-node de la plantilla. .gitignore solo recibe las entradas que le faltan, entre ellas /data/* para la base de datos local (sin dejar de versionar data/fixtures, data/seeds y data/hooks) y /backups.

Rutas

Vela examina src/routes para decidir si sigue siendo el marcador de posición intacto de npx sv create. Si lo es, se reemplaza con las rutas de la plantilla; si has escrito algo real, se deja tal cual. Anula la detección en cualquier sentido con --skip-routes o --force-routes.

Sin bendecir

Esto funciona en un proyecto recién salido de npx sv create, sin ninguna preparación:

Las rutas generadas van directamente bajo src/routes en un proyecto sin los grupos (public) y (app) de Vela.

Estos escriben marcado de shadcn-svelte o manejan shadcn-svelte directamente, así que necesitan un components.json y el paquete shadcn-svelte:

En un proyecto que no los tiene se niegan antes de cambiar nada, e imprimen los dos comandos que lo preparan:

$ npx sv add tailwindcss
$ npx shadcn-svelte@latest init

Los comandos que necesitan una base de datos lo dicen del mismo modo, y remiten a vela enable backend. Una vez ejecutado, vela generate scaffold también funciona sin shadcn-svelte, con sus páginas en HTML plano.