dat-ssg
— это инструмент командной строки, который использует конфигурацию в папке для загрузки веб-сайтов с помощью wget
и публикации содержимого в:
netlify
dat
До dat-ssg
для размещения веб-сайта на dat вы могли либо редактировать его вручную, либо настроить генератор статического сайта и систему CI для публикации. Это, однако, предотвращает использование каких-либо cms. Будь то Ghost, Wordpress, Drupal или любая другая динамическая издательская система. С помощью dat-ssg
вы, наконец, можете начать использовать эти системы и разместить сайт, который будет доступен через dat
.
Это также весьма полезно, если вы хотите использовать более дешевый хостинг статических сайтов, который хорошо развертывается в глобальной CDN.
Для dat-ssg
вам необходимо иметь две папки: _"configuration-folder" и "work-folder" .
.out
и .error
для процесса каждой конфигурации. dat-ssg
нужны wget
и git
доступные в командной строке. wget
используется для загрузки сайта, git
используется только для запуска публикации, если сайт изменился.
dat-ssg
перезапишет загруженные файлы (например, метатеги и ссылки), чтобы они выглядели правильно при размещении на целевом сервере.
dat-ssg
— это узловое приложение, которое можно быстро запустить с помощью
$ npx dat-ssg --work-folder ./work --configuration-folder ./config
Процесс будет искать любые изменения в папке конфигурации и запускать процесс для каждого файла.
Для настройки вы можете просто добавить файл с расширением .js
в папку конфигурации.
В файл необходимо экспортировать объект javascript, выглядящий следующим образом:
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
}
}
Каждый раз, когда вы меняете файл, процесс перезапускается и запускается развертывание.
Некоторые CMS добавляют параметры запроса в ссылки Javascript или CSS, например: assets/main/css/main.css?v=25be6de7e6
Эти файлы будут преобразованы с помощью wget в: assets/main/css/main.css@v=25be6de7e6.css
. .
Возможно, вы захотите указать настройки кэша в netlify.config
, чтобы кэшировать файлы «навсегда»:
[[ headers ]]
for = " /*@v=* "
[ headers . values ]
cache-control = " public, max-age=31536000 "
При первом получении конфигурации в рабочей папке будут созданы новые данные. У этого нового файла будет новая ссылка, поэтому каждый раз, когда вы удаляете папку, вам нужно будет обновить ссылки репликации и ссылки, которые вы использовали в настройках dat-dns.
Этот проект получил финансирование в рамках программы исследований и инноваций Европейского Союза Horizon 2020 в рамках проекта LEDGER, финансируемого в рамках грантового соглашения №825268.
Массачусетский технологический институт