JoRobo:如何专业管理扩展开发
所以你创建了自己的Joomla扩展,可能是为了客户,也可能是为了通用用途,现在你正在想如何最好地管理它。你必须处理错误修复、存储它、创建版本,也许还会通过新功能进行改进。那么我们该如何做呢?你可以有多种方法来做这件事,但今天我想向你展示一个对我很好的可能解决方案。
跟踪你的版本!
首先:我们希望为你的扩展提供一个适当的存储空间。当我提到版本控制系统如git时,我希望我没有说一些有争议的事情。跟踪所有更改是绝对必要的,无论你是为客户的网站做这件事,还是想公开分发你的扩展。在最简单的情况下,你可以在你的电脑上创建一个git仓库,并在这里跟踪所有更改,但使用像Github这样的外部服务,拥有外部服务器,可以提供更多帮助。首先,它们为你提供了文件的简单备份,但它们还提供了许多其他功能,这些功能可能非常有用。我不会在这里为Github吹嘘,因为你们大多数人可能都知道像Github这样的工具的好处,但我希望你们考虑Gitlab,甚至可能考虑自托管Gitlab实例。
文件夹结构
现在我们已经有了可以存储它的git仓库,问题仍然是如何使仓库中的文件夹结构看起来。通常,我们需要存储一些元数据,比如README、我们使用的服务的配置等。这些额外的文件通常存储在仓库的根目录中,我们不希望将它们与我们的扩展一起分发。所以我们的扩展代码应该放在一个子文件夹中。最常见的是,人们使用命名如/src的文件夹。
现在,如果我们正在创建一个组件,我们可以在其中创建一个文件夹 /com_foo,并在该文件夹内创建文件夹 /admin 和 /site 以便为两个部分、插件和模块创建,例如,我们可以有 /plg_system_bar 或 /mod_fourtytwo。虽然这允许快速查看此存储库中不同的扩展,并且创建的文件夹数量最少,但这意味着将来需要更多的工作。相反,我建议创建文件夹的方式类似于扩展最终会在 Joomla 安装中结束的位置。对于组件,这意味着在你的存储库中有一个 /administrator/components/com_foobar 和一个 /components/com_foobar 文件夹。好处是,你可以将你的 /src 文件夹复制到 Joomla 安装中,并自动将所有内容放在正确的位置。这样,你可以在开发过程中轻松地通过在后台运行“发现”来安装扩展。
使其在日常工作中可用
但我们在现实世界中如何编写代码呢?是的,我们有一个很好的文件夹结构,但开发仍然很繁琐,因为我们到目前为止都是手动将文件从存储库复制到 Joomla 安装中,可能在该安装中进行开发,然后再将文件复制回存储库。这当然容易出错。你是否完全忘记了某个文件?你的所有文件是否都与应用程序存储库保持最新?这里的神奇词汇是“符号链接”,将扩展的文件夹链接到 Joomla 安装中。好处是,你可以在你的存储库文件夹中直接处理文件,它们会神奇地出现在你的 Joomla 安装中。无需从 A 复制文件到 B,然后再复制回来。这的唯一缺点是,当你在存储库文件夹中直接开发时,你的 IDE 不会看到所有 Joomla CMS 文件。为了解决这个问题,你可以将你的 Joomla 的 /libraries 文件夹符号链接到你的存储库,或者在 IDE 中将你的 Joomla 安装路径添加为外部依赖项。
JoRobo 设置
我们还必须找到一种方法来从我们的扩展中创建版本或可安装包。当然,你可以手动完成这项工作,但手动从组件、模块和插件中生成可能 10 个安装包,然后再将这些所有包打包成一个 pkg 扩展,这显然很麻烦。应运而生的是这篇文章的标题工具:JoRobo。JoRobo 是 Robo.li 的一个插件,这是一个用 PHP 编写的任务运行器。JoRobo 带来了一组专门针对 Joomla 开发的任务,并且整个工具可以通过在存储库文件夹中运行 "composer require-dev joomla-projects/jorobo" 来轻松安装。除了安装此工具外,我们还需要在存储库根目录中创建一个 "RoboFile.php",其中包含特定于项目的任务,或者将 JoRobo 的任务传递给此项目,以及一个 jorobo.ini,其中包含此项目的配置。如果你想要一个良好的起点,你可以使用这个来自新 JED 项目的 Robofile.php:https://github.com/joomla-projects/Joomla-Extension-Directory/blob/main/RoboFile.php,以及该项目的 jorobo.ini:https://github.com/joomla-projects/Joomla-Extension-Directory/blob/main/jorobo.dist.ini
JoRobo 神奇之处!
有了这个设置,我们现在可以调用 "vendor/bin/robo map <目标>",其中 <目标> 是我们的 Joomla 安装的根文件夹,脚本将为我们生成所有必要的符号链接。这既适用于 Linux,也适用于 Windows,但在 Windows 上,你的命令提示符需要管理员权限才能工作。JoRobo 还允许你使用 "vendor/bin/robo build" 命令从你的存储库中创建可安装包。当你在这个存储库根目录中运行该命令时,你将在 /dist 文件夹中找到一个 pkg 扩展,可以按照传统方式安装。该命令不仅从各个地方复制文件,而且当你使用占位符时,它还会将正确的文件填充到扩展的清单中。这是一个如何使用的例子,可以在我们的 weblinks 存储库中看到:https://github.com/joomla-extensions/weblinks/blob/master/src/administrator/components/com_weblinks/weblinks.xml
更多功能
现在我们可以轻松构建可安装的软件包,我们可能想将它们发布给公众。为此,我们应该确保所有文件都有版权头信息,并且我们在@since标签中使用的是正确的版本。JoRobo有“headers”和“bump”命令来完成这项工作。
JoRobo实际上有一些历史背景,并且曾经有一段时间处于休眠状态,但最近开发又重新开始,并且有一些有趣的新功能正在开发中。与所有Joomla一样,我们非常欢迎贡献。如果你感兴趣,请随时查看这里:https://github.com/joomla-projects/jorobo
还有其他吗?
我个人非常喜欢这个脚本集合,因为它使我能够更加专业地工作。同时,这绝对不是所有可以提高你的代码质量工具的终点。检查代码风格、静态代码分析、单元测试和系统测试对于确保为您的客户提供最佳代码非常有帮助。然而,深入这个兔子洞是另一个话题,在此期间,我希望您有时间和能力测试一下这里提出的内容。
在Joomla社区杂志上发表的一些文章代表了作者对特定主题的个人意见或经验,可能不代表Joomla项目的官方立场。
通过接受,您将访问https://magazine.joomla.net.cn/外部第三方提供的服务
评论