مستوحاة من Middleman ، تتم كتابة أدوات الأدوات Node.js بالطوب ومجموعة من الإضافات للسماح للتأليف السريع إذا كانت تطبيقات الويب الثابتة.
ينصب التركيز هنا على تطوير ونشر التطبيقات التي تكون أثقل على CSS أو JavaScript ، وتستفيد من الأدوات التي تسمح بأقل قدر من الكتابة لإنجاز المهمة (على سبيل المثال ، قلم ، قهوة ، اليشم). أخيرًا ، لتحسين إدارة الملفات بحيث يتم تحميل تطبيقاتك في أسرع وقت ممكن (من المفترض عبر بعض CDN).
تحتاج أولاً إلى تثبيت خادم Systatic. إنه في الحقيقة مجرد خادم Bricksjs+العبودية مع مجموعة من المسارات والقوالب المحددة مسبقًا.
npm install systatic -g
systatic new my_proj
cd my_proj
systatic
يقوم الأمر الأخير بتشغيل الخادم ، بشكل افتراضي المنفذ 3000 (مثل الطوب ، يمكنك تغيير المنفذ مع --port ).
سيأتي المشروع الذي تم إنشاؤه الافتراضي مع ملف config.json. يحدد هذا الملف مختلف مجموعات المصدر والمكونات الإضافية. بشكل عام ، يجب عليك فقط اتباع الإعدادات الافتراضية ، ولكن إذا كنت ترغب في تغيير أي شيء (على سبيل المثال ، قم بتغيير مسار JavaScripts من /javascripts إلى /js ) قم بتغيير هذا الملف.
نظرًا لأن النقطة هي إنشاء موقع ثابت ، سيتم build الأمر التالي الذي تقوم بتشغيله. سيؤدي ذلك إلى إزالة الحاجة إلى خادم تطبيق مثل NodeJS ، ويسمح لك فقط بتفريغ الملفات الثابتة في مكان ما مثل CloudFront.
يطلب ذلك بناء الموقع الثابت إلى مراحل ، على غرار أنظمة البناء الأكبر مثل Maven.
مراحل (تنفيذ مرحلة ينفذ كل مرحلة إلى ذلك):
سيقوم اختيار المرحلة بتشغيل جميع الإضافات المرفقة حتى تلك المرحلة.
systatic merge
يقوم بتنظيف دليل الإخراج ، وإنشاء مورد HTML ، وإنشاء الأصول ، ودمجها في حد أدنى.
systatic test
هل نفس الشيء ، ولكن بعد ذلك يدير أي اختبار تكامل ثابت اختياري (لا توجد تطبيقات حاليًا ، ولكن بالنظر إلى شيء مثل QuNit)
مع هذا المحتوى الثابت الذي تم إنشاؤه ، ستحتاج بعد ذلك إلى النشر في بعض الخادم ، Git Repo ، CDN ... أيا كان.
systatic publish
أنا أفكر في إعادة تنفيذ المكونات الإضافية المصنوعة من الصلبة للعمل مع المكونات الإضافية لـ NPM ، والتي يتم تكوينها لكل مشروع. هذا هو السماح للمكونات الإضافية لجهة خارجية بإضافة مرحلة خاصة بها إلى أدوات البناء/تقديم.
الأفكار الحالية:
قد يكون مثال إذا أراد شخص ما إضافة وظيفة لضغط مجموعة من الرموز المستخدمة كـ CSS في العفاريت ، وتمرير هذه المعلومات إلى الإجراء التالي (والتي ستكون مرتبطة بمرحلة الضغط).