Hospedaje de contenido estático para aplicaciones de Fabric

Fabric Apps incluye un servicio de hospedaje de contenido estático que compila, empaqueta y sirve la aplicación de front-end junto con las API de back-end. Cuando el alojamiento estático está habilitado, la CLI despliega tus activos construidos en Fabric y proporciona una URL de alojamiento. Puedes exigir a los usuarios que inicien sesión y tengan permiso para ver la app de Fabric, o puedes permitir el acceso anónimo a los recursos alojados.

Prerequisites

  • Un proyecto de Fabric Apps con una aplicación de front-end (por ejemplo, React, Vue o Vanilla TypeScript).
  • Comando de compilación que genera una salida estática (por ejemplo, npm run build).

Funcionamiento del hospedaje estático

Al implementar con el hospedaje estático habilitado, la CLI realiza estos pasos:

  1. Ejecuta el comando de compilación configurado (por ejemplo, npm run build).
  2. Valida que la carpeta de salida existe y contiene archivos.
  3. Empaqueta todos los archivos en un archivo ZIP comprimido (máximo de 100 MB).
  4. Carga el archivo en el host de Fabric Apps.
  5. Aplica la configuración de acceso configurado y devuelve una URL de alojamiento.

Configuración del hospedaje estático

Añada una sección staticHosting debajo de services en su archivo rayfin/rayfin.yml:

services:
  staticHosting:
    enabled: true
    folder: dist
    buildCommand: npm run build
    indexDocument: index.html
    assetAccess: protected

Opciones de configuración

Opción Obligatorio Predeterminado Descripción
enabled Sí — Establézcalo en true para habilitar el hospedaje estático.
folder Sí — Carpeta de salida que contiene los archivos estáticos generados, relativa a root.
root No raíz del proyecto Directorio raíz del proyecto de front-end, en relación con la raíz del proyecto.
buildCommand No — Comando shell que se ejecutará antes del empaquetado (por ejemplo, npm run build).
indexDocument No — Documento predeterminado para atender solicitudes de directorio (por ejemplo, index.html).
assetAccess No protected para despliegues no interactivos Controla el acceso a los activos alojados. Usa protected para exigir iniciar sesión y tener permiso para ver la aplicación Fabric, o public para permitir el acceso anónimo.

Configurar el acceso a los activos alojados

Establece assetAccess en uno de estos valores:

  • protected- Requiere que los usuarios inicien sesión y tengan permiso para ver la aplicación Fabric antes de poder recuperar los activos alojados.
  • public - Permite a cualquier persona con la URL de alojamiento recuperar los activos alojados sin iniciar sesión.

El alojamiento protegido controla el acceso a los archivos estáticos que sirve Fabric Apps. No reemplaza la autenticación y la autorización en tu aplicación ni en tus APIs.

El primer despliegue interactivo npx rayfin up te pide que elijas una configuración de acceso si assetAccess no está configurada. Los despliegues no interactivos usan protected y guardan esa configuración en rayfin.yml.

Para cambiar la configuración de acceso tras el despliegue, actualiza assetAccess, y luego ejecuta un despliegue completo:

npx rayfin up

El npx rayfin up staticapp deploy comando solo actualiza el contenido. No aplica ningún valor nuevo assetAccess.

Ejemplo con un directorio de front-end independiente

Si el código de front-end reside en un subdirectorio:

services:
  staticHosting:
    enabled: true
    root: frontend
    folder: dist
    buildCommand: npm run build
    indexDocument: index.html
    assetAccess: protected

Esta configuración convierte la ruta de salida en <project-root>/frontend/dist.

Implementación de contenido estático

Implementación completa

Al ejecutar npx rayfin up, el contenido estático se implementa automáticamente como parte de la implementación de pila completa:

npx rayfin up

La CLI compila el front-end, empaqueta la salida y la carga junto con la configuración de back-end. Después de la implementación, la CLI imprime la dirección URL de hospedaje y la escribe en el .env.fabric-* archivo como VITE_RAYFIN_HOSTING_URL.

Implementación estática independiente

Use el staticapp deploy subcomando para volver a implementar el contenido estático sin volver a ejecutar la implementación completa:

npx rayfin up staticapp deploy

Este comando es útil cuando solo se cambia el código de front-end y se desea un ciclo de iteración más rápido.

Omitir el paso de compilación

Si ya ha creado el front-end y desea implementar la salida existente sin volver a generar:

npx rayfin up staticapp deploy --skip-build

Habilitación del registro detallado

Mostrar la salida detallada durante la implementación:

npx rayfin up staticapp deploy --verbose

Configuración de devolución de llamada de autenticación

Cuando están habilitados tanto el alojamiento estático como la autenticación, la CLI de Rayfin registra automáticamente un URI de callback de autenticación a partir de la URL de alojamiento.

Por ejemplo, si la URL de alojamiento es https://example.webapp.com, la CLI añade este URI de devolución de llamada:

services:
  auth:
    allowedRedirectUris:
      - http://localhost:5173
      - http://localhost:5173/auth/callback
      - https://example.webapp.com/auth/callback

No es necesario configurar manualmente el URI de devolución de llamada de autenticación: la CLI actualiza la configuración y la envía durante la implementación.

Límites de tamaño de implementación

  • El archivo ZIP comprimido no debe superar los 100 MB.
  • La CLI usa la compresión máxima para minimizar el tamaño de carga.
  • Si la salida de compilación supera el límite, optimice los recursos mediante:
    • Excluir los mapas de origen de las compilaciones de producción.
    • Compresión o eliminación de imágenes y vídeos grandes.
    • Mover archivos binarios al almacenamiento de Fabric Apps en lugar de agruparlos.

Ejemplo completo

Una configuración completa rayfin.yml con el hospedaje estático, la autenticación y los servicios de datos habilitados:

id: my-app
name: my-app
version: 1.0.0
services:
  auth:
    enabled: true
    allowedRedirectUris:
      - http://localhost:5173
      - http://localhost:5173/auth/callback
    fabric:
      enabled: true
  data:
    enabled: true
    dialect: mssql
  staticHosting:
    enabled: true
    folder: dist
    buildCommand: npm run build
    indexDocument: index.html
    assetAccess: protected

Realiza una prueba local

Antes de la implementación, compruebe que la compilación estática funciona localmente:

  1. Compile el front-end:

    npm run build
    
  2. Compruebe que la carpeta de salida contiene los archivos esperados:

    ls dist
    
  3. Sirva los archivos generados con un servidor estático local:

    npx serve dist
    
  4. Abra la dirección URL impresa por el servidor y compruebe que la aplicación se carga correctamente.

Solución de problemas de implementación

No se encontró la carpeta estática

Si la CLI informa de que la carpeta estática no existe:

  • Compruebe que la ruta de acceso folder en rayfin.yml es correcta y relativa a root (o a la raíz del proyecto si no se ha establecido root).
  • Asegúrese de que el comando de compilación se ejecutó correctamente y generó la salida en el directorio esperado.

Carpeta estática vacía

Normalmente, una carpeta de salida vacía significa que se produjo un error en el comando de compilación o no se produjo la salida. Ejecute el comando de compilación manualmente para comprobar si hay errores:

npm run build

La implementación supera el límite de tamaño

Si el archivo ZIP supera los 100 MB:

  • Revise la salida de la compilación en busca de archivos innecesarios (mapas de código fuente, recursos de desarrollo).
  • Configura el empaquetador para excluir los source maps en las compilaciones de producción.
  • Mueva archivos binarios grandes a Fabric Apps Storage.

No hay ningún punto de conexión remoto configurado

El npx rayfin up staticapp deploy comando requiere una implementación remota existente. Ejecute npx rayfin up primero para configurar el punto de conexión remoto y, a continuación, use staticapp deploy para las actualizaciones posteriores.