Sistem Build
Chamilo menggunakan Webpack 5 melalui Symfony Webpack Encore untuk membangun aset frontend. Konfigurasi build lengkap berada di webpack.config.js di root proyek.
Output ditulis ke public/build/, disajikan di bawah jalur publik /build.
Titik Masuk
JavaScript
vue
assets/vue/main.js
Aplikasi utama Vue 3
vue_installer
assets/vue/main_installer.js
Asisten instalasi
legacy_app
assets/js/legacy/app.js
JavaScript lama
legacy_exercise
assets/js/legacy/exercise.js
Pemutar latihan
legacy_lp
assets/js/legacy/lp.js
Pemutar jalur pembelajaran
legacy_document
assets/js/legacy/document.js
Penampil dokumen
legacy_free-jqgrid
assets/js/legacy/free-jqgrid.js
Widget grid lama
legacy_framereadyloader
assets/js/legacy/frameReadyLoader.js
Pemuat frame siap untuk iframe lama
translatehtml
assets/js/translatehtml.js
Pembantu terjemahan HTML
glossary_auto
assets/js/glossary-auto.js
Penyorotan otomatis istilah glosarium
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
Fitur Build
Vue 3 SFC — Komponen file tunggal
.vuedikompilasi olehvue-loader; kompiler runtime dinonaktifkan (runtimeCompilerBuild: false), sehingga semua template harus dikompilasi sebelumnyaTypeScript — Mode transpilation saja (
transpileOnly: true) untuk build cepat, tanpa pemeriksaan tipe selama buildSass/SCSS — Dukungan penuh untuk SCSS melalui
sass-loaderTailwind CSS — CSS utilitas diproses inline melalui PostCSS (dikonfigurasi di dalam
webpack.config.js; tidak ada file terpisahpostcss.config.js)Babel — Transpilasi ES6+ dengan
@babel/preset-envdan polyfills daricore-js@3(useBuiltIns: "usage")jQuery auto-provision —
autoProvidejQuery()membuat$danjQuerytersedia secara global tanpa impor eksplisit, mendukung kode lamaSource maps — Diaktifkan hanya pada pengembangan
Single runtime chunk — Runtime bersama untuk semua titik masuk
Filesystem cache — Cache sistem file persisten Webpack diaktifkan untuk mempercepat rebuild inkremental
Chunk namespacing —
output.uniqueNamedanoutput.chunkLoadingGlobaldiatur sebagai"chamilo"/"webpackChunkChamilo"untuk mencegah tabrakan pemuatan chunk ketika beberapa bundel Webpack ada bersama di satu halaman
Fitur Eksklusif Produksi
Versioning — Sufiks hash konten pada semua nama file output (
enableVersioning())Integritas Subresource — Atribut
integritypada tag<script>dan<link>(enableIntegrityHashes())Pembersihan Output —
public/build/dibersihkan sebelum setiap build produksi
Salinan Aset Tanpa Hash (CopyUnhashedAssetsPlugin)
CopyUnhashedAssetsPlugin)Beberapa halaman PHP lama merujuk aset dengan nama file tetap dan tidak dapat menggunakan manifest Webpack. Plugin khusus CopyUnhashedAssetsPlugin (didefinisikan di akhir webpack.config.js) menyalin file produksi tertentu dengan hash ke jalur tambahan tanpa hash setelah setiap 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
Aset Perpustakaan yang Disalin
copyFiles() menyalin beberapa paket npm langsung ke public/build/libs/ tanpa mengemasnya, untuk digunakan melalui tag <script> / <link> di template lama:
flatpickr(JS + CSS + locales)chart.jsmediaelement+mediaelement-pluginsmomentlocalesselect2(JS + CSS)qtip2readmore-jsjs-cookiepwstrength-bootstrapmultiselect-two-sides
Perintah Build
Konfigurasi Tailwind
Tailwind dikonfigurasi dalam file tailwind.config.js. Poin utama:
important: true— Semua utilitas yang dihasilkan menyertakan!important, memungkinkan mereka untuk mengesampingkan gaya komponen PrimeVue tanpa perlu trik spesifisitas tambahanJalur konten — Tailwind memindai
assets/**/*.{js,vue},public/main/**/*.{php,twig,tpl},public/plugin/**/*.{php,twig,tpl}, dansrc/CoreBundle/Resources/views/**/*.html.twiguntuk penggunaan kelasSistem warna dengan variabel CSS — Setiap token warna (primer, sekunder, tersier, sukses, informasi, peringatan, bahaya) didukung oleh properti khusus CSS (misalnya,
--color-primary-base) yang ditentukan oleh tema divar/themes/[theme-name]/colors.css. Nilai-nilai tersebut adalah trio kanal RGB yang dipisahkan oleh spasi, memungkinkan penggunaan utilitas opasitas Tailwind (bg-primary/50)Skala font khusus — Pasangan ukuran/tinggi baris
body-1,body-2,caption,tinyditambahkan melaluitheme.extend.fontSizePlugin —
@tailwindcss/formsdan@tailwindcss/typographydiaktifkan
PostCSS (Tailwind + Autoprefixer) dikonfigurasi secara inline di dalam webpack.config.js melalui enablePostCssLoader() — tidak ada file terpisah postcss.config.js.
Terakhir diperbarui
Apakah ini membantu?