dat-ssg
est un outil de ligne de commande qui utilise la configuration dans un dossier pour télécharger des sites Web avec wget
et publier le contenu sur :
netlify
dat
Avant dat-ssg
, pour héberger un site Web sur dat, vous pouvez soit le modifier manuellement, soit configurer un générateur de site statique et un système CI pour effectuer la publication. Cependant, cela empêche l’utilisation de tout cms. Que ce soit Ghost, Wordpress, Drupal ou tout autre système de publication dynamique. Avec dat-ssg
vous pouvez enfin commencer à utiliser ces systèmes et héberger le site pour qu'il soit accessible via dat
.
C'est également très utile si vous souhaitez utiliser un hébergement de site statique moins cher qui se déploie bien dans un CDN mondial.
Pour dat-ssg
vous devez avoir deux dossiers : le _"configuration-folder" et le "work-folder" .
.out
et .error
pour le processus de chaque configuration. dat-ssg
a besoin wget
et git
disponibles dans la ligne de commande. wget
permet de télécharger le site, git
permet de déclencher une publication uniquement si le site a changé.
dat-ssg
réécrira les fichiers téléchargés (par exemple les balises méta et les liens) pour qu'ils aient l'air corrects lorsqu'ils sont hébergés sur la cible.
dat-ssg
est une application de nœud et peut être exécutée rapidement en utilisant
$ npx dat-ssg --work-folder ./work --configuration-folder ./config
Le processus recherchera toute modification dans le dossier de configuration et lancera un processus pour chaque fichier.
Pour la configuration, vous pouvez simplement ajouter un fichier avec la terminaison .js
au dossier de configuration.
Le fichier doit exporter un objet javascript ressemblant à ceci :
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
}
}
Chaque fois que vous modifiez le fichier, le processus sera redémarré et un déploiement sera déclenché.
Certains CMS ajoutent des paramètres de requête aux liens javascript ou css, par exemple : assets/main/css/main.css?v=25be6de7e6
Ces fichiers seront transformés avec wget en : assets/main/css/main.css@v=25be6de7e6.css
. .
Vous souhaiterez peut-être spécifier les paramètres de cache dans netlify.config
pour mettre en cache les fichiers "pour toujours" :
[[ headers ]]
for = " /*@v=* "
[ headers . values ]
cache-control = " public, max-age=31536000 "
La première fois qu'une configuration est récupérée, une nouvelle donnée est créée dans le dossier de travail. Cette nouvelle donnée aura un nouveau lien, donc chaque fois que vous supprimerez le dossier, vous devrez mettre à jour les liens de réplication et les liens que vous avez utilisés dans vos paramètres dat-dns.
Ce projet a reçu un financement du programme de recherche et d'innovation Horizon 2020 de l'Union européenne dans le cadre du projet LEDGER financé dans le cadre de la convention de subvention n°825268.
MIT