构建系统
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
旧版 iframe 的框架就绪加载器
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 — 通过
sass-loader提供完整的 SCSS 支持Tailwind CSS — 通过 PostCSS 内联处理实用优先的 CSS(在
webpack.config.js中配置;没有单独的postcss.config.js文件)Babel — 使用
@babel/preset-env和core-js@3填充物进行 ES6+ 转译(useBuiltIns: "usage")jQuery 自动提供 —
autoProvidejQuery()使$和jQuery在全局范围内可用,无需显式导入,支持旧版代码源映射 — 仅在开发环境中启用
单一运行时块 — 所有入口共享运行时
文件系统缓存 — 启用 Webpack 的持久化文件系统缓存以加速增量重建
块命名空间 —
output.uniqueName和output.chunkLoadingGlobal设置为"chamilo"/"webpackChunkChamilo",以避免在页面上多个 Webpack 包共存时发生块加载冲突
仅生产环境特性
版本控制 — 所有输出文件名带有内容哈希后缀(
enableVersioning())子资源完整性 — 在
<script>和<link>标签上添加integrity属性(enableIntegrityHashes())输出清理 — 每次生产构建前清空
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 + 语言包)chart.jsmediaelement+mediaelement-pluginsmoment语言包select2(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)自定义字体比例 — 通过
theme.extend.fontSize添加了body-1、body-2、caption、tiny大小/行高对插件 — 启用了
@tailwindcss/forms和@tailwindcss/typography
PostCSS(Tailwind + Autoprefixer)通过 webpack.config.js 中的 enablePostCssLoader() 进行内联配置 — 没有独立的 postcss.config.js 文件。
最后更新于
这有帮助吗?