Saltar al contenido principal

ws-resources.json

ws-resources.json es un archivo opcional en la raíz de la carpeta del sitio que lo configura. El propio archivo no se publica como parte del sitio.

CampoTipoQué hace
headerspatrón glob → { cabecera: valor }Cabeceras HTTP de los archivos que casan.
routespatrón → ruta de un recursoRutas que sirven otro recurso (para aplicaciones de una sola página).
redirectspatrón de ruta → { location, status_code }Redirecciones HTTP.
metadataobjetolink, image_url, description, project_url, creator: se muestran con el Display del Site.
site_nametextoNombre del Site.
object_id0x…El Site publicado. Lo escribe desplegar; con él, desplegar actualiza ese sitio.
ignorelista de patrones globArchivos que no se publican.

Un campo desconocido es un error (por ejemplo, site-name en lugar de site_name).

Ejemplo​

El sitio de ejemplo del proyecto usa todos los campos salvo object_id:

{
"site_name": "Sitio de ejemplo en IOTA",
"metadata": {
"description": "Un sitio estático en la red de almacenamiento propia de IOTA, publicado desde una wallet IOTA.",
"creator": "IOTA Storage"
},
"headers": {
"/estilo.css": { "Cache-Control": "public, max-age=3600" },
"/*.svg": { "Cache-Control": "public, max-age=86400" }
},
"routes": {
"/app/*": "/index.html"
},
"redirects": {
"/antiguo": { "location": "/docs/", "status_code": 301 },
"/blog/**": { "location": "/docs/", "status_code": 302 }
},
"ignore": ["/borradores/*"]
}

Esta documentación se publica también como sitio, con este archivo:

{
"site_name": "IOTA Storage docs",
"headers": {
"/assets/**": {
"cache-control": "public, max-age=31536000, immutable"
},
"/es/assets/**": {
"cache-control": "public, max-age=31536000, immutable"
}
}
}

headers​

Cada clave es un patrón glob sobre la ruta del archivo (que empieza por /); cada valor es un objeto con cabeceras HTTP y sus valores, todo como texto.

  • Si varios patrones casan con un archivo, gana el que tiene más segmentos de ruta. Las cabeceras de patrones distintos no se mezclan.
  • Los nombres de las cabeceras se guardan en minúsculas.
  • Cada recurso lleva además content-encoding: identity y un content-type según la extensión del archivo (una tabla con los tipos habituales de la web, wasm y md incluidos), salvo que el patrón que casa los defina. Una extensión desconocida lleva application/octet-stream. El content-type no lleva charset; ponlo tú si lo necesitas.

Sintaxis de los patrones:

PatrónCasa con
*, **Cualquier secuencia de caracteres, también con /. ** tiene que ser un segmento entero de la ruta (/assets/**).
?Un carácter.
[abc], [a-z], [!abc]Un carácter de la clase, o que no sea de la clase.

Así, /*.svg casa con /logo.svg y también con /img/iconos/logo.svg.

routes​

Cada clave es un patrón de ruta y cada valor, la ruta de un recurso del sitio. Cuando una ruta no tiene recurso (ni un index.html debajo, ni una redirección), el portal sirve el recurso de la ruta del sitio que case.

  • * vale por cualquier secuencia de caracteres, y gana el patrón más largo que case.
  • Un patrón puede tener como mucho dos * y ninguno de ( ) [ ] { } + ? ^ $ | \.
  • El destino tiene que ser un archivo del sitio; si no, la publicación falla.

El uso típico es una aplicación de una sola página: "/app/*": "/index.html" sirve /index.html para /app/ajustes, /app/usuarios/42, etc.

redirects​

Cada clave es un patrón de ruta, y cada valor, un objeto con location (una ruta del sitio o una URL completa) y status_code, que puede ser 301, 302, 303, 307 o 308.

  • Los patrones son globs por segmentos: * casa dentro de un segmento y no cruza /; ** casa con cualquier número de segmentos. Un segmento puede tener como mucho un *, y un patrón, como mucho un **.
  • Si casan varios patrones, gana el más específico: más caracteres literales y, si empatan, menos *.
  • Las redirecciones solo se aplican a rutas que no tienen recurso. Una redirección a la misma ruta da un error 508.

Por ejemplo:

"redirects": {
"/pagina-antigua": { "location": "/index.html", "status_code": 308 },
"/documentacion": { "location": "https://docs.iotastorage.com/es/", "status_code": 301 },
"/imagenes/**/*": { "location": "/logo.svg", "status_code": 302 }
}

metadata y site_name​

metadata solo admite link, image_url, description, project_url y creator, como texto. Se guardan en el Site y se muestran con su Display, por ejemplo en wallets y exploradores.

site_name es el nombre del Site. Si falta, un sitio ya publicado conserva su nombre y uno nuevo recibe un nombre por defecto.

object_id​

El ID del Site publicado. El comando desplegar de la CLI lo escribe tras la primera publicación y lo usa la vez siguiente para actualizar ese mismo sitio en lugar de crear otro. Guárdalo junto con los archivos del sitio si despliegas desde varias máquinas.

ignore​

Una lista de patrones glob (la misma sintaxis que en headers). Los archivos que casan no se publican. Por ejemplo:

"ignore": ["/private", "/private/*", "/secret.txt"]

Archivos​

  • Se publican todos los archivos de la carpeta, también los que empiezan por punto, salvo ws-resources.json y los ignorados.
  • Una ruta puede tener hasta unos 2 KB.
  • Todos los archivos del sitio son públicos, como cualquier blob.