Build System
Το Chamilo χρησιμοποιεί το Webpack 5 μέσω του Symfony Webpack Encore για τη μεταγλώττιση των frontend assets. Η πλήρης διαμόρφωση μεταγλώττισης βρίσκεται στο webpack.config.js στη ρίζα του έργου.
Η έξοδος γράφεται στο public/build/, και παρέχεται μέσω του δημόσιου μονοπατιού /build.
Σημεία Εισόδου
JavaScript
vue
assets/vue/main.js
Main Vue 3 application
vue_installer
assets/vue/main_installer.js
Installation wizard
legacy_app
assets/js/legacy/app.js
Legacy JavaScript
legacy_exercise
assets/js/legacy/exercise.js
Exercise player
legacy_lp
assets/js/legacy/lp.js
Learning path player
legacy_document
assets/js/legacy/document.js
Document viewer
legacy_free-jqgrid
assets/js/legacy/free-jqgrid.js
Legacy grid widget
legacy_framereadyloader
assets/js/legacy/frameReadyLoader.js
Frame-ready loader for legacy iframes
translatehtml
assets/js/translatehtml.js
HTML translation helper
glossary_auto
assets/js/glossary-auto.js
Automatic glossary term highlighting
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 —
.vuesingle file components compiled byvue-loader; runtime compiler is disabled (runtimeCompilerBuild: false), so all templates must be pre-compiledTypeScript — Transpile-only mode (
transpileOnly: true) for fast builds, no type-checking during buildSass/SCSS — Full SCSS support via
sass-loaderTailwind CSS — Utility-first CSS processed inline via PostCSS (configured inside
webpack.config.js; there is no separatepostcss.config.js)Babel — ES6+ transpilation with
@babel/preset-envandcore-js@3polyfills (useBuiltIns: "usage")jQuery auto-provision —
autoProvidejQuery()makes$andjQueryavailable globally without explicit imports, supporting legacy codeSource maps — Enabled in development only
Single runtime chunk — Shared runtime for all entries
Filesystem cache — Webpack's persistent filesystem cache is enabled to speed up incremental rebuilds
Chunk namespacing —
output.uniqueNameandoutput.chunkLoadingGlobalare set to"chamilo"/"webpackChunkChamilo"to avoid chunk-loading collisions when multiple Webpack bundles coexist on a page
Χαρακτηριστικά Μόνο για Παραγωγή
Versioning — Content-hash suffixes on all output filenames (
enableVersioning())Subresource Integrity —
integrityattributes on<script>and<link>tags (enableIntegrityHashes())Output cleanup —
public/build/is wiped before each production build
Αντιγραφές Assets Χωρίς Hash (CopyUnhashedAssetsPlugin)
CopyUnhashedAssetsPlugin)Ορισμένες legacy PHP σελίδες αναφέρονται σε assets με σταθερό όνομα αρχείου και δεν μπορούν να χρησιμοποιήσουν το Webpack manifest. Ένα προσαρμοσμένο CopyUnhashedAssetsPlugin (ορίζεται στο κάτω μέρος του webpack.config.js) αντιγράφει ορισμένα hashed αρχεία παραγωγής σε επιπλέον μονοπάτι χωρίς hash μετά από κάθε μεταγλώττιση:
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
Αντιγραφόμενα Library Assets
Το copyFiles() αντιγράφει διάφορα npm πακέτα απευθείας στο public/build/libs/ χωρίς να τα ενσωματώσει, για χρήση μέσω ετικετών <script> / <link> σε legacy templates:
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.
Τελευταία ενημέρωση
Ήταν χρήσιμο αυτό;