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
إلى مجلد التكوين.
يحتاج الملف إلى تصدير كائن جافا سكريبت يبدو كالتالي:
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
}
}
في كل مرة تقوم فيها بتغيير الملف، سيتم إعادة تشغيل العملية وسيتم تشغيل النشر.
تضيف بعض أنظمة إدارة المحتوى معلمات استعلام إلى روابط جافا سكريبت أو 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.
معهد ماساتشوستس للتكنولوجيا