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 計畫框架內提供的。
麻省理工學院