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 将有一个新的链接,因此每次删除该文件夹时,您都需要更新复制链接和 dat-dns 设置中使用的链接。
该项目已获得欧盟 Horizon 2020 研究和创新计划的资助,该计划是在第 825268 号赠款协议资助的 LEDGER 项目框架内提供的。
麻省理工学院