CLI de sitios (sitio.mjs)
sitio.mjs es la línea de comandos de referencia para publicar y gestionar sitios. Es un script
de Node.js con los nombres de los comandos en español. Firma con un archivo de clave privada y paga en IOTA
desde esa cuenta.
La CLI está en el repositorio del proyecto, que todavía no es público. Para casi todo el mundo, lo indicado es la app, que hace lo mismo desde una wallet del navegador.
Comandos
| Comando | Qué hace |
|---|---|
publicar <carpeta> | Publica la carpeta como un sitio nuevo. |
actualizar <carpeta> <sitio> | Actualiza un sitio ya publicado con la carpeta. |
desplegar <carpeta> | Publica la primera vez y actualiza después, con el object_id de ws-resources.json, que escribe él mismo. |
mapa <sitio> | Lista los recursos de un sitio (ruta, content-type, blob ID, patch), sus rutas y sus redirecciones. |
convertir <0x… o base36> | Pasa el ID de un Site a base36 y al revés. |
destruir <sitio> | Borra los blobs, quita los recursos y quema el Site. |
renovar [<sitio>…] --epocas N | Alarga los blobs del sitio sin subir nada. |
<sitio> puede ser el ID del objeto (0x…), su forma en base36 o un nombre de IOTA Names
(nombre.iota, por su dirección de destino).
Opciones
| Opción | Por defecto | Qué significa |
|---|---|---|
--clave <archivo> | Archivo con la clave privada (iotaprivkey1…) de la cuenta que paga y es dueña del sitio. Guárdalo en secreto. | |
--epocas <N> | 1 | Épocas que se guardan los archivos nuevos, y hasta las que se renuevan los blobs en uso (época actual + N). Como mucho 53. |
--permanente | no | Guarda los archivos como blobs permanentes (no borrables). Por defecto son borrables. |
--nombre "…" | Nombre del sitio; tiene prioridad sobre site_name. | |
--max-quilt <bytes> | 512 MiB | Tamaño máximo de un quilt al agrupar los archivos (nunca más que el blob más grande de la red). |
--red <archivo> | red local | Archivo JSON que describe la red: la URL del RPC y los IDs de sus paquetes y objetos (ver Contratos). Para testnet, además, IOTA_RPC_URL=https://api.testnet.iota.cafe. |
Ejemplos
# testnet
export IOTA_RPC_URL=https://api.testnet.iota.cafe
# publicar (la primera vez) o actualizar (después) una carpeta durante 5 épocas
node sitio.mjs desplegar ./mi-sitio --red testnet.json --clave ana.key --epocas 5
# actualizar un sitio concreto
node sitio.mjs actualizar ./mi-sitio <ID del sitio> --red testnet.json --clave ana.key
# ver qué tiene un sitio
node sitio.mjs mapa blog.ana.iota --red testnet.json
# pasar del ID del objeto al subdominio y al revés
node sitio.mjs convertir <ID del sitio> --red testnet.json
# alargar los blobs de un sitio hasta la época actual + 30
node sitio.mjs renovar <ID del sitio> --red testnet.json --clave ana.key --epocas 30
# destruir un sitio y recuperar sus depósitos
node sitio.mjs destruir <ID del sitio> --red testnet.json --clave ana.key
Al publicar o actualizar, la CLI dice cuántos archivos sube, reutiliza y renueva, cada quilt (blob
ID, archivos, tamaño, coste y época de fin), el ID del Site, su forma en base36 y su URL en el
portal.
Cómo funciona
La CLI se apoya en la biblioteca sitios.mjs, que no depende de Node.js para que la app también
pueda usarla en el navegador. En cada publicación:
- lee la carpeta y
ws-resources.json, y deja fuera los archivos ignorados; - calcula las cabeceras y el SHA-256 de cada archivo;
- los compara con el
Sitepublicado, si lo hay, para subir solo lo que cambia (ver Actualizar, renovar y destruir); - agrupa en quilts los archivos que hay que subir y guarda cada quilt como un blob, pagando en IOTA;
- crea o actualiza el
Siteen tantas transacciones como hagan falta; - borra los blobs borrables que ya no se usan.