资讯动态

Joomla 5.x 从源码构建本地开发环境:仓库结构、环境搭建与贡献指南

发布时间:2026/10/15 3:04:42 来源:尧图企业网站定制
后端CMS【免费下载链接】joomla-cmsHome of the Joomla! Content Management System项目地址https://gitcode.com/gh_mirrors/jo/joomla-cms点击查看免费下载导读本文以 Joomla! CMS 5.x 源码仓库joomla-cms为对象系统讲解如何从 Git 源码而非安装包出发搭建一套可运行、可调试、可参与开发的本地环境。你将掌握 PHP Composer Node.js Git 的完整前置配置、composer install与npm ci的依赖安装流程、autoload_psr4.php命名空间缓存机制、前端资源构建工具链、测试体系Unit / Integration / System以及 Pull Request 的目标分支选择规范。Joomla! 是什么Joomla!官方站点是一个内容管理系统Content Management SystemCMS用于构建网站与功能强大的在线应用程序。它本质是一个运行于 Web 服务器上的 PHP 应用运行前提是服务器具备PHP运行环境数据库采用MySQL、MariaDB 或 PostgreSQL之一。Joomla! 是免费开源软件依据 GNU General Public LicenseGPL第 2 版或更高版本分发见 LICENSE.txt。仓库根目录下的index.php是站点前端入口它会在启动时校验 PHP 最低版本JOOMLA_MINIMUM_PHP当前为8.1.0低于该版本直接输出友好的不兼容提示并终止见 index.php。本仓库即 Joomla 5.x 的源码本体。从 libraries/src/Version.php 可以确认当前版本的完整标识PRODUCT Joomla!、主版本 5、次版本 4、补丁版本 10扩展版本标识为rc2-dev当前处于Development开发状态代号Kutegemea开发主分支为5.4-dev。安装包与源码仓库的区别需要特别澄清的是本仓库并不能“开箱即装”。README 明确说明 Joomla 无法从这个仓库直接安装运行——仓库里没有libraries/vendor依赖目录、没有编译后的media/vendor资源也没有安装产生的configuration.php配置文件。想要获得可部署的发行包应当改用最新稳定包官方下载站 downloads.joomla.org每夜构建包Nightly Builddeveloper.joomla.org 的 nightly-builds 页面。源码仓库面向的读者是开发者希望修改 Joomla 核心代码、开发扩展、参与社区贡献或进行二次开发的人群。下文所有操作均针对源码模式。本地开发环境的四项前置依赖要从源码跑起 Joomla你至少需要以下工具链工具用途最低版本要求以仓库实际配置为准PHP运行 Joomla 应用8.1.0及以上见 composer.json 的platform.php与 index.php 的JOOMLA_MINIMUM_PHP且需要CLI命令行版本因为本地环境搭建与后续命令都要在终端执行Composer管理 Joomla 的 PHP 依赖无特定版本要求按官方安装指引安装即可Node.js编译 Joomla 的 JavaScript 与 SASS 文件 20.0.0见 package.json 的engines.nodenpm安装前端依赖与执行构建脚本 10.1.0见 package.json 的engines.npmGit版本管理、拉取源码与分支切换各平台均可macOS 可用 BrewLinux 可用 apt/yum 等包管理器注意本仓库 CI 在 PHP 8.18.5 版本矩阵上跑测试见 .github/workflows/ci.yml本地开发建议同样使用较新的 PHP 版本。从源码搭建可运行环境完整操作步骤按照 README 给出的标准流程在终端依次执行# 1. 克隆仓库 git clone https://gitcode.com/gh_mirrors/jo/joomla-cms.git # 2. 进入仓库目录 cd joomla-cms # 3. 切换到 5.4-dev 开发分支 git checkout 5.4-dev # 4. 安装全部 PHP 依赖生成 libraries/vendor composer install # 5. 安装全部 npm 依赖生成 node_modules并触发资源准备 npm ci各步骤背后发生了什么git checkout 5.4-dev当前主要开发分支。README 中的分支策略是bug 修复进5.4-dev或6.1-dev新特性进6.2-dev详见后文“PR 目标分支规范”。composer install依据根目录的 composer.json 安装 PHP 依赖。值得注意的几个关键配置vendor-dir为libraries/vendor依赖不会装到根目录vendor/而是集中到libraries/vendor这也是 CLI 入口 cli/joomla.php 检查JPATH_LIBRARIES . /vendor/autoload.php的原因platform.php被锁定为8.1.0保证依赖解析与目标 PHP 版本兼容PSR-4 自动加载映射Joomla\CMS\→libraries/src/即 Joomla 5 的框架核心都存放在libraries/src下post-install-cmd会执行php build/update_fido_cache.php预生成 WebAuthn/FIDO 相关的缓存数据。npm ci与npm install不同npm ci严格按照package-lock.json锁定版本安装保证团队与 CI 环境依赖一致。安装完成后npm的install脚本会执行node build/build.mjs --prepare把node_modules中需要的资源复制到media/目录、把build/media_source中的 SCSS/JS 源文件编译成media/下可直接使用的静态资源。这一步没有执行的话站点会缺少前端资源——cli/joomla.php正是通过检查media/vendor目录是否存在来判断你是否完成了源码环境的完整准备。完成上述步骤后还需要一个 Web 服务器如 Apache/Nginx把仓库根目录作为站点根并准备一个 MySQL/MariaDB/PostgreSQL 数据库然后通过 Joomla 的安装程序完成数据库初始化Web 安装或 CLI 安装均可见下文。拉取更新时的重要提醒autoload_psr4.php 命名空间缓存README 特别强调了一个在源码开发中极易踩坑的机制Joomla 会在JOOMLA_ROOT/administrator/cache/autoload_psr4.php中缓存其扩展的命名空间映射。当通过 Git 拉取新增、删除或移动扩展时该文件可能已过期需要删除并让其在下一次访问时自动重建。也就是说Joomla 5 采用 PSR-4 风格自动加载核心映射写在 composer.jsonJoomla\CMS\→libraries/src/而各扩展组件、模块、插件的命名空间映射则由系统动态生成并缓存在administrator/cache/autoload_psr4.php。当你git pull后新增了扩展目录旧的缓存不会包含新扩展的命名空间就会报“类不存在”之类的错误。解法很简单# 删除缓存文件下次访问站点时会自动重新生成 rm administrator/cache/autoload_psr4.php在 Windows 上等效操作为删除该文件。这是 README 明确推荐的官方处理方式。此外administrator/cache目录同时也是 Joomla 的通用缓存目录见 includes/defines.php 中JPATH_CACHE的定义开发过程中遇到“改代码不生效”的怪问题也常可通过清空该目录解决。前端资源构建npm 脚本与 build 工具链源码仓库中的 SCSS/JS 并非直接供浏览器使用而是存放在build/media_source/作为源文件需要编译输出到media/。构建工具的详细约定见 build/README.md核心规则如下现代 JavaScript文件后缀必须是.es6.js构建时由 Rollup 做 ES2017 转换产出普通与压缩minified两份文件生产环境代码文件名不含.es6部分。Web Component后缀为.w-c.es6.js除上述转换外还会自动压缩对应的 SCSS 并注入到 JS 文件替换{{CSS_CONTENTS_PLACEHOLDER}}占位符。遗留 JavaScript后缀为.es5.jsESLint 跳过检查仅产出 minified 版本。SCSS以下划线_开头的 SCSS 文件不生成独立入口普通 SCSS 会编译为普通与 minified 两份 CSS。CSS只做压缩。常用 npm 命令定义于 package.json命令作用npm run build:js编译全部 JS不含 Bootstrap 与媒体管理器npm run build:js -- build/media_source/com_actionlogs只编译指定目录下的 JSnpm run build:css编译全部 SCSSnpm run build:css -- templates/cassiopeia只编译指定目录的 SCSSnpm run build:bs5构建 Bootstrap JS 组件npm run build:com_media构建媒体管理器 Vue 应用生产模式npm run build:com_media:dev构建媒体管理器 Vue 应用开发模式不压缩、不产 ES5、开启 Vue devtoolsnpm run lint:js/npm run lint:css检查 JS/Vue、SCSS 代码风格可加-- --fix自动修复npm run watch监听源文件变化自动重新编译npm run watch:com_media专门监听媒体管理器应用0.3 秒防抖npm run gzip为所有.min.js与.min.css生成.gz文件npm run versioning为joomla.asset.json中的资源生成正确的版本哈希高效工作建议来自 build/README.md改动 WebAuthn 的 JS 时可运行npm run watch -- build/media_source/plg_system_webauthn监听父目录后SCSS/CSS 的改动同样会被捕获。改动 Cassiopeia 模板样式则用npm run watch -- templates/cassiopeia/scss。提交代码前务必运行npm run lint:js -- --fix与npm run lint:css -- --fix检查代码风格。配置、CLI 安装与入口文件配置文件模板源码仓库提供了 installation/configuration.php-dist 配置文件模板。它的注释说明仅在 Web 安装器不可用时的最后手段使用——将文件重命名为configuration.php移到站点根目录并手工编辑配置项覆盖站点、数据库、服务器、会话、邮件、缓存、CORS、代理、调试、SEO、Cookie 等各类设置例如class JConfig { // 站点设置 public $offline false; public $sitename Joomla!; public $editor tinymce; public $list_limit 20; // 数据库设置mysqli / pgsql 等 public $dbtype mysqli; public $host localhost; public $user ; public $password ; public $db ; public $dbprefix jos_; // 会话设置 public $session_handler database; // 可选 database / filesystem / memcached / redis // 邮件设置 public $mailer mail; // 可选 mail / sendmail / smtp public $smtphost localhost; public $smtpport 25; // 缓存设置 public $caching 0; public $cache_handler file; // 可选 file / memcached / redis public $cachetime 15; // 调试与 SEO public $debug false; public $sef true; public $sef_rewrite false; }其中$secret字段建议使用足够随机的字符串模板注释给出了 Linux 下生成随机串的命令示例它用于站点安全与 API 鉴权相关场景。CLI 安装与命令行工具源码模式还支持完全通过命令行完成安装。安装入口为 installation/joomla.php它同样先校验 PHP 版本8.1.0然后加载installation/includes/cli.php执行安装流程。cli/joomla.php在检测到站点尚未安装缺少configuration.php时会直接提示php installation/joomla.php install安装完成后站点根目录会生成configuration.php。之后即可使用 CLI 工具cli/joomla.php执行各种控制台命令——它会加载框架、启动 DI 容器并把session等服务别名指向 CLI 会话后端见 cli/joomla.php。提醒cli/joomla.php在启动时会检查libraries/vendor/autoload.php与media/vendor目录是否存在若缺失会提示你完成composer install与npm ci这两个前置步骤——这再次印证了源码环境搭建的必要流程。目录路径常量Joomla 的路径常量定义于 includes/defines.php理解它们有助于在源码开发中定位文件常量指向JPATH_ROOT/JPATH_SITE仓库根目录JPATH_ADMINISTRATORadministrator/后台JPATH_LIBRARIESlibraries/框架与 vendor 依赖JPATH_PLUGINSplugins/JPATH_THEMEStemplates/JPATH_CACHEadministrator/cache/含autoload_psr4.php缓存JPATH_APIapi/RESTful Web ServicesJPATH_CLIcli/测试体系Unit、Integration 与 System仓库根目录 tests/README.md 概述了 Joomla 的自动化测试体系分为三类Unit 单元测试PHPUnit检查 Joomla 框架的纯 PHP 代码逻辑。运行方式详见 tests/Unit/README.mdcomposer install # 安装依赖即自动具备测试环境 ./libraries/vendor/bin/phpunit --testsuite Unit测试配置位于 phpunit.xml.dist其中定义了Unit与Integration两个测试套件测试基类为 tests/Unit/UnitTestCase.php。Integration 集成测试PHPUnit检查与外部服务数据库、LDAP 等交互的代码部分。CI 中会在 MySQL 9 / 8.4 / 8.0.13、MariaDB 12.0 / 10.4、PostgreSQL 12 / 18 的矩阵上运行见 .github/workflows/ci.yml数据库连接参数通过JTEST_DB_*常量注入见 phpunit.xml.dist。System 系统测试Cypress端到端E2E测试在真实浏览器Chrome/Edge中模拟用户操作覆盖 Web 安装、后台界面、站点前端以及/api/index.php/v1Web Services API。相关说明详见 tests/System/README.md# 从模板生成 Cypress 配置 cp cypress.config.dist.mjs cypress.config.mjs # 无头模式运行整套系统测试首个用例就是 Web 安装 npm run cypress:run # 只运行安装步骤 npx cypress run --spec tests/System/integration/install/Installation.cy.js # 打开 Cypress 图形界面可回放浏览器操作便于调试 npm run cypress:open系统测试还提供了大量 Cypress 自定义命令db_*数据库命令如cy.db_createArticle({ title: automated test article })直接造数api_*API 命令如cy.api_get(/content/articles)调用 Web Services以及cy.task(writeRelativeFile, ...)等 Node 侧任务详见 tests/System/support/commands/db.mjs 与 tests/System/support/commands/api.mjs。测试文件按约定放入tests/System/integration/{site|administrator}/components/com_*、modules/mod_*、plugins/{type}/*、api/com_*等目录。CI 持续集成.github/workflows/ci.yml 展示了项目完整的质量门禁composer validate→composer install→npm ci构建资产 → PHP 代码风格php-cs-fixer→ JS/CSS 代码风格ESLint/Stylelint→ PHPStan 静态分析 → 单元测试PHP 8.18.5→ 集成测试多数据库矩阵含 LDAP 容器→ Windows 上的单元/集成测试 → Cypress 系统测试 → typos 拼写检查。如果你在本地把上述流程走通提交的代码质量将与 CI 完全对齐。参与贡献PR 目标分支选择规范README 用一个简洁的分类表规定了 Pull Request 的目标分支以保证项目稳定、透明、易协作变更类型含义目标分支Bug / Patch release修复真实错误软件崩溃、产出错误结果或行为与规范不符无需大规模重构或新增功能即可解决5.4-dev或6.1-dev*Feature / Minor release一切非严格 bug 的变更新行为、重构、性能改进、增强、UI 微调等合并到下一个次要版本6.2-dev*细则已在 5.4.x 中存在的 bug 应修复在5.4-dev只有 6.x 首次引入的 bug 才应提交到6.1-dev。打开 PR 后维护者或 bug squad 成员会确认分类并打上相应标签如果分支选错了维护者会直接请你重新定向retarget到正确的分支。其他贡献相关渠道README 均有提及功能请求走issues.joomla.orgBug 上报遵循官方《Filing bugs and issues》文档并在 Issue Tracker 提交开发者文档见 manual.joomla.org翻译贡献通过 Joomla Crowdin 项目进行Joomla 是社区共同开发的软件可通过 volunteers.joomla.org 加入社区。版权与许可版权归 Open Source Matters, Inc.2005 年起依据GNU General Public License version 2 or later分发LICENSE.txt完整的许可证细节见 Joomla 官方许可证文档。小结从源码构建 Joomla 5.x 本地环境的关键路径可以概括为git clone→git checkout 5.4-dev→composer install→npm ci→ 安装Web 或php installation/joomla.php install。在此之上理解autoload_psr4.php缓存机制、掌握npm run build:*/npm run watch资源构建命令、善用 Unit/Integration/System 三层测试并遵循分支分类规范你就能像 Joomla 核心开发者一样高效地在 README.md 描述的这套工作流中迭代代码。相关可继续深入阅读的仓库入口composer.jsonPHP 依赖、package.json前端构建脚本、build/README.md构建约定、tests/README.md测试体系、installation/configuration.php-dist配置模板。赞分享后端CMS【免费下载链接】joomla-cmsHome of the Joomla! Content Management System项目地址https://gitcode.com/gh_mirrors/jo/joomla-cms点击查看免费下载相关推荐Linkbricks-Llama3.2-Korean-cpt-3b训练数据集解析5000万韩语新闻的预处理策略Linkbricks Llama3.2 Korean cpt 3b训练数据集解析5000万韩语新闻的预处理策略 Linkbricks Llama3.2 KorPrototool 本地开发与贡献指南环境搭建、代码结构与 PR 全流程Prototool 本地开发与贡献指南环境搭建、代码结构与 PR 全流程 本文以仓库中的 docs/development.md https://link.g开发工具Gutenberg 代码贡献环境搭建指南从 Fork 到本地 WordPress 开发环境Gutenberg 代码贡献环境搭建指南从 Fork 到本地 WordPress 开发环境 本篇指南面向想要向 GutenbergWordPress 块编辑人工智能AI AgentAgent 框架工具调用Agent 工作流RAGMCP Clients强化学习上一篇如何快速定制暗黑破坏神2角色d2s-editor存档编辑器实用指南下一篇DDrawCompat终极指南3步让经典游戏在Windows 11焕发新生创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑