Build System
يستخدم Chamilo برنامج Webpack 5 عبر Symfony Webpack Encore لبناء أصول الواجهة الأمامية. يوجد الإعداد الكامل للبناء في webpack.config.js في جذر المشروع.
يتم كتابة المخرجات إلى public/build/، ويتم تقديمها تحت مسار /build العام.
نقاط الدخول
JavaScript
vue
assets/vue/main.js
التطبيق الرئيسي Vue 3
vue_installer
assets/vue/main_installer.js
معالج التثبيت
legacy_app
assets/js/legacy/app.js
JavaScript القديم
legacy_exercise
assets/js/legacy/exercise.js
مشغل التمارين
legacy_lp
assets/js/legacy/lp.js
مشغل مسار التعلم
legacy_document
assets/js/legacy/document.js
عارض الوثائق
legacy_free-jqgrid
assets/js/legacy/free-jqgrid.js
عنصر واجهة الشبكة القديم
legacy_framereadyloader
assets/js/legacy/frameReadyLoader.js
محمل جاهز للإطارات لـ iframes القديمة
translatehtml
assets/js/translatehtml.js
مساعد ترجمة HTML
glossary_auto
assets/js/glossary-auto.js
تمييز تلقائي لمصطلحات المصطلحات
CSS
app
assets/css/app.scss
css/chat
assets/css/chat.scss
css/document
assets/css/document.scss
css/editor
assets/css/editor.scss
css/editor_content
assets/css/editor_content.scss
css/markdown
assets/css/markdown.scss
css/print
assets/css/print.scss
css/responsive
assets/css/responsive.scss
css/scorm
assets/css/scorm.scss
ميزات البناء
Vue 3 SFC — مكونات الملف الواحد
.vueالمجمعة بواسطةvue-loader؛ مترجم التشغيل معطل (runtimeCompilerBuild: false)، لذا يجب ترجمة جميع القوالب مسبقًاTypeScript — وضع التحويل فقط (
transpileOnly: true) لبناء سريع، بدون فحص الأنواع أثناء البناءSass/SCSS — دعم كامل لـ SCSS عبر
sass-loaderTailwind CSS — CSS مبني على المرافق يتم معالجته داخليًا عبر PostCSS (مع إعداد داخل
webpack.config.js؛ لا يوجدpostcss.config.jsمنفصل)Babel — تحويل ES6+ مع
@babel/preset-envوملء فجواتcore-js@3(useBuiltIns: "usage")jQuery auto-provision —
autoProvidejQuery()يجعل$وjQueryمتاحين عالميًا بدون استيراد صريح، مما يدعم الكود القديمSource maps — مفعل في التطوير فقط
Single runtime chunk — تشغيل مشترك لجميع نقاط الدخول
Filesystem cache — ذاكرة التخزين المؤقت لنظام الملفات الدائمة لـ Webpack مفعلة لتسريع إعادة البناء التدريجي
Chunk namespacing —
output.uniqueNameوoutput.chunkLoadingGlobalمضبوطان على"chamilo"/"webpackChunkChamilo"لتجنب التصادمات في تحميل القطع عند وجود حزم Webpack متعددة على صفحة واحدة
ميزات الإنتاج فقط
Versioning — ملحقات محتوى الهاش على جميع أسماء الملفات المخرجة (
enableVersioning())Subresource Integrity — سمات
integrityعلى علامات<script>و<link>(enableIntegrityHashes())Output cleanup — يتم مسح
public/build/قبل كل بناء إنتاج
نسخ أصول غير مشفرة (CopyUnhashedAssetsPlugin)
CopyUnhashedAssetsPlugin)تشير بعض صفحات PHP القديمة إلى الأصول باسم ملف ثابت ولا يمكنها استخدام مظهر Webpack. يقوم CopyUnhashedAssetsPlugin المخصص (معرّف في أسفل webpack.config.js) بنسخ بعض ملفات الإنتاج المشفرة إلى مسار إضافي غير مشفر بعد كل بناء:
legacy_document.[hash].js
legacy_document.js
legacy_exercise.[hash].js
legacy_exercise.js
legacy_framereadyloader.[hash].js / .css
legacy_framereadyloader.js / .css
css/document.[hash].css
css/document.css
css/editor_content.[hash].css
css/editor_content.css
glossary_auto.[hash].js
glossary_auto.js
أصول المكتبات المنسوخة
يقوم copyFiles() بنسخ عدد من حزم npm مباشرة إلى public/build/libs/ بدون تجميعها، للاستخدام عبر علامات <script> / <link> في القوالب القديمة:
flatpickr(JS + CSS + locales)chart.jsmediaelement+mediaelement-pluginsmomentlocalesselect2(JS + CSS)qtip2readmore-jsjs-cookiepwstrength-bootstrapmultiselect-two-sides
أوامر البناء
تكوين Tailwind
يتم تكوين Tailwind في tailwind.config.js. النقاط الرئيسية:
important: true— جميع المرافق المُولدة تشمل!important، مما يسمح لها بتجاوز أنماط مكونات PrimeVue دون الحاجة إلى حيل تحديد إضافيةمسارات المحتوى — يقوم Tailwind بفحص
assets/**/*.{js,vue}،public/main/**/*.{php,twig,tpl}،public/plugin/**/*.{php,twig,tpl}، وsrc/CoreBundle/Resources/views/**/*.html.twigلاستخدام الفئاتنظام ألوان متغيرات CSS — كل رمز لون (primary، secondary، tertiary، success، info، warning، danger) مدعوم بخاصية CSS مخصصة (مثل
--color-primary-base) مُعرّفة لكل سمة فيvar/themes/[theme-name]/colors.css. القيم عبارة عن ثلاثيات قنوات RGB مفصولة بمسافات، مما يمكّن مرافق Tailwind للشفافية (bg-primary/50)مقياس خط مخصص — يتم إضافة أزواج الحجم/ارتفاع السطر
body-1،body-2،caption،tinyعبرtheme.extend.fontSizeالإضافات —
@tailwindcss/formsو@tailwindcss/typographyمُفعّلتان
يتم تكوين PostCSS (Tailwind + Autoprefixer) داخليًا داخل webpack.config.js عبر enablePostCssLoader() — لا يوجد ملف postcss.config.js مستقل.
آخر تحديث
هل كان هذا مفيدا؟