dat-ssg
es una herramienta de línea de comandos que utiliza la configuración en una carpeta para descargar sitios web con wget
y publicar el contenido en:
netlify
dat
Antes de dat-ssg
, para alojar un sitio web en dat, puede editarlo manualmente o configurar un generador de sitios estáticos y un sistema de CI para realizar la publicación. Esto, sin embargo, impide el uso de cualquier cms. Ya sea Ghost, Wordpress, Drupal o cualquier otro sistema de publicación dinámico. Con dat-ssg
finalmente puedes comenzar a usar esos sistemas y alojar el sitio para que sea accesible a través de dat
.
También es bastante útil si desea utilizar alojamiento de sitios estáticos más económico que se implemente bien en un CDN global.
Para dat-ssg
necesita tener dos carpetas: la _"carpeta de configuración" y la "carpeta de trabajo" .
.out
y .error
para el proceso de cada configuración. dat-ssg
necesita que wget
y git
estén disponibles en la línea de comando. wget
se usa para descargar el sitio, git
se usa para activar una publicación solo si el sitio ha cambiado.
dat-ssg
reescribirá los archivos descargados (por ejemplo, las metaetiquetas y los enlaces) para que se vean correctos cuando estén alojados en el destino.
dat-ssg
es una aplicación de nodo y se puede ejecutar rápidamente usando
$ npx dat-ssg --work-folder ./work --configuration-folder ./config
El proceso buscará cualquier cambio en la carpeta de configuración e iniciará un proceso para cada archivo.
Para la configuración, simplemente puede agregar un archivo con la terminación .js
a la carpeta de configuración.
El archivo necesita exportar un objeto javascript con este aspecto:
module . exports = {
title : "My Site" , // Title to be used in the process, e.g. for the dat config file
description : "This is my homepage" , // Description used for the process, e.g. for the dat config file
domain : "mydomain.com" , // domain to download data from
https : true , // The domain support https
newDomain : "https://targetdomain.org" , // domain of the new site (needed for content-rewrites)
/*
* wget will download all files that are found at the domain's root but there may be extra roots to look for content.
* You need to specify all the roots
*/
roots : [
"/" ,
"/b.html" ,
"/c.html"
] ,
notFound : '/404/' , // Adds '/404/ to the roots and adds 404 configuration to the deployments (netlify, dat,...)
// Interval to look for updates
update : 1000 * 60 * 20 , // Update every 10 minutes
// The process will use following user name to make commits
git : {
email : "[email protected]" ,
name : "The Name"
} ,
// If you want to publish the page to netlify you need to specify this property, else you can skip it!
netlify : {
siteId : "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" , // Id, provided in the netlify setup
production : false , // Publish as production = true, else = false
/*
* Auth token as provided through the netlify user interface, can be also loaded through `process.env`
*/
authToken : "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ,
config : `# Optional configuration, see https://docs.netlify.com/configure-builds/file-based-configuration/#sample-file`
} ,
dat : {
// Time to push after changes, in which a hosting service can connect and download the latest update.
pushTime : 1000 * 60 * 2 // 2 minutes
}
}
Cada vez que cambie el archivo, el proceso se reiniciará y se activará una implementación.
Algunos CMS agregan parámetros de consulta a enlaces javascript o css, por ejemplo: assets/main/css/main.css?v=25be6de7e6
Estos archivos se transformarán con wget a: assets/main/css/main.css@v=25be6de7e6.css
.
Es posible que desee especificar la configuración de caché en netlify.config
para almacenar en caché los archivos "para siempre":
[[ headers ]]
for = " /*@v=* "
[ headers . values ]
cache-control = " public, max-age=31536000 "
La primera vez que se recupera una configuración se creará un nuevo dat en la carpeta de trabajo. Este nuevo dat tendrá un nuevo enlace, por lo que cada vez que elimine la carpeta, deberá actualizar los enlaces de replicación y los enlaces que utilizó en su configuración de dat-dns.
Este proyecto ha recibido financiación del programa de investigación e innovación Horizonte 2020 de la Unión Europea en el marco del Proyecto LEDGER financiado mediante el acuerdo de subvención No825268.
MIT