Système de construction
Chamilo utilise Webpack 5 via Symfony Webpack Encore pour la construction des ressources frontend. La configuration complète du build se trouve dans webpack.config.js à la racine du projet.
La sortie est écrite dans public/build/ et servie sous le chemin public /build.
Points d'entrée
JavaScript
vue
assets/vue/main.js
Application principale Vue 3
vue_installer
assets/vue/main_installer.js
Assistant d'installation
legacy_app
assets/js/legacy/app.js
JavaScript legacy
legacy_exercise
assets/js/legacy/exercise.js
Lecteur d'exercices
legacy_lp
assets/js/legacy/lp.js
Lecteur de parcours d'apprentissage
legacy_document
assets/js/legacy/document.js
Visionneuse de documents
legacy_free-jqgrid
assets/js/legacy/free-jqgrid.js
Widget de grille legacy
legacy_framereadyloader
assets/js/legacy/frameReadyLoader.js
Chargeur prêt pour les iframes legacy
translatehtml
assets/js/translatehtml.js
Aide à la traduction HTML
glossary_auto
assets/js/glossary-auto.js
Mise en évidence automatique des termes du glossaire
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
Fonctionnalités de Build
Vue 3 SFC — Composants de fichier unique
.vuecompilés parvue-loader; le compilateur d'exécution est désactivé (runtimeCompilerBuild: false), donc tous les templates doivent être pré-compilésTypeScript — Mode de transpilation uniquement (
transpileOnly: true) pour des builds rapides, sans vérification de type pendant le buildSass/SCSS — Support complet de SCSS via
sass-loaderTailwind CSS — CSS utilitaire traité en ligne via PostCSS (configuré dans
webpack.config.js; il n'y a pas de fichier séparépostcss.config.js)Babel — Transpilation ES6+ avec
@babel/preset-envet polyfillscore-js@3(useBuiltIns: "usage")Provision automatique de jQuery —
autoProvidejQuery()rend$etjQuerydisponibles globalement sans importations explicites, supportant le code legacySource maps — Activés uniquement en développement
Chunk d'exécution unique — Runtime partagé pour toutes les entrées
Cache du système de fichiers — Le cache persistant du système de fichiers de Webpack est activé pour accélérer les rebuilds incrémentaux
Noms d'espaces pour les chunks —
output.uniqueNameetoutput.chunkLoadingGlobalsont définis sur"chamilo"/"webpackChunkChamilo"pour éviter les collisions de chargement de chunks lorsque plusieurs bundles Webpack coexistent sur une page
Fonctionnalités spécifiques à la production
Versionnement — Suffixes de hachage de contenu sur tous les noms de fichiers de sortie (
enableVersioning())Intégrité des sous-ressources — Attributs
integritysur les balises<script>et<link>(enableIntegrityHashes())Nettoyage de la sortie —
public/build/est vidé avant chaque build de production
Copies d'actifs non hachés (CopyUnhashedAssetsPlugin)
CopyUnhashedAssetsPlugin)Certaines pages PHP legacy référencent des actifs par un nom de fichier fixe et ne peuvent pas utiliser le manifeste Webpack. Un plugin personnalisé CopyUnhashedAssetsPlugin (défini en bas de webpack.config.js) copie certains fichiers de production hachés vers un chemin supplémentaire non haché après chaque build :
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
Actifs de bibliothèque copiés
copyFiles() copie un certain nombre de packages npm directement dans public/build/libs/ sans les bundler, pour une utilisation via des balises <script> / <link> dans les templates legacy :
flatpickr(JS + CSS + locales)chart.jsmediaelement+mediaelement-pluginsmomentlocalesselect2(JS + CSS)qtip2readmore-jsjs-cookiepwstrength-bootstrapmultiselect-two-sides
Commandes de Build
Configuration de Tailwind
Tailwind est configuré dans tailwind.config.js. Points clés :
important: true— Toutes les utilités générées incluent!important, leur permettant de surcharger les styles des composants PrimeVue sans astuces de spécificité supplémentairesChemins de contenu — Tailwind scanne
assets/**/*.{js,vue},public/main/**/*.{php,twig,tpl},public/plugin/**/*.{php,twig,tpl}, etsrc/CoreBundle/Resources/views/**/*.html.twigpour l'utilisation des classesSystème de couleurs par variables CSS — Chaque token de couleur (primary, secondary, tertiary, success, info, warning, danger) est soutenu par une propriété personnalisée CSS (par exemple
--color-primary-base) définie par thème dansvar/themes/[theme-name]/colors.css. Les valeurs sont des triplets de canaux RGB séparés par des espaces, permettant les utilités d'opacité de Tailwind (bg-primary/50)Échelle de police personnalisée — Paires de taille/hauteur de ligne
body-1,body-2,caption,tinyajoutées viatheme.extend.fontSizePlugins —
@tailwindcss/formset@tailwindcss/typographysont activés
PostCSS (Tailwind + Autoprefixer) est configuré en ligne dans webpack.config.js via enablePostCssLoader() — il n'y a pas de fichier autonome postcss.config.js.
Mis à jour
Ce contenu vous a-t-il été utile ?