Targets de backend
Prepara un target de backend, lee su cierre de artefactos y su resolución congelada, y ejecútalo en un entorno propio. El CDN nunca lo ejecuta.
- Disponibilidad: Planificado
- Evidencia: Leído del código fuente
- Guía práctica
Estado inicial
Tu aplicación tiene código de servidor escrito como módulos públicos. Quieres que el CDN lo compile y lo entregue junto con el frontend, como parte del mismo release inmutable.
Define el target
{ "kind": "backend", "package": "@example/api", "selection": "1.0.0", "entry": ".", "runtime": "node>=22" }Envíalo con targets.define, por ejemplo a /v1/applications/{application}/targets/api. runtime es un requisito que tú declaras a quien ejecute el target. El CDN lo guarda y lo informa; no lo comprueba ni proporciona el runtime.
Los módulos de backend no necesitan Widgets. Son módulos públicos compilados para un target de servidor, así que sus solicitudes de entrega usan target=node:
/m/@example/[email protected]/modules/~root?target=node&format=esmPrepara y luego lee el cierre
Registra y prepara como con cualquier target. Cuando el release esté listo, lee el cierre del target de backend:
| Operación | Solicitud | Capacidad |
|---|---|---|
releases.closure |
GET /v1/applications/{application}/releases/{release}/targets/{target}/closure |
application.read |
| Miembro | Significado |
|---|---|
entry |
El specifier público que se importa primero, y su url relativa al origen |
runtime |
El requisito que declaraste en el target |
conditions, format |
Para qué se generaron las salidas. format es esm. |
resolution |
El documento beyond-resolution/1 congelado del target |
artifacts |
Cada artefacto del cierre: url relativa al origen, kind (module, style, map, asset), digest, bytes y media |
ready |
Si todos los artefactos son durables y se pueden obtener |
El cierre de un release que no está en un estado que lo tenga responde 409 STATE_INVALID.
ready informa solo sobre artefactos. Indica que los bytes existen y se pueden obtener. No dice nada sobre un proceso, un puerto o una comprobación de salud, porque el CDN no inicia ninguno.
Ejecútalo tú
Tu entorno hace tres cosas, en este orden:
- Obtiene el cierre y verifica cada artefacto contra su
digest. - Resuelve los imports con la
resolutioncongelada, anteponiendo el origen del CDN a cada URL relativa al origen. - Importa la
entry.
Cómo cargas módulos ES desde URL depende de tu runtime y queda fuera de este contrato. Fija el release: el cierre de un release nunca cambia, así que un host que cargó el release 12 sigue ejecutando el release 12 hasta que despliegues otro.
Límites
- Revertir el frontend no revierte tu host. Coordina ambos tú, y recuerda que revertir código no puede deshacer cambios en una base de datos.
- Los secretos nunca van en un target, en un módulo ni en una URL. Proporciónalos en tu propio entorno.
- Una aplicación privada restringe quién puede obtener sus artefactos. Dale a tu host su propio acceso; consulta Acceso privado.