十月CMS中的插件管理和版本控制



我想知道如何在 10 月对项目的插件依赖项进行版本控制。

当我使用命令php artisan plugin:install PLUGIN时,所有插件文件都添加到plugins/文件夹中,不会被 git 忽略。

每次克隆存储库时我都必须再次执行此操作吗?

没有更好的解决方案(子模块,作曲家)吗?

只需在他们的网站上创建项目,将插件添加到创建的项目中,并将安装与该项目相关联。插件将自动更新并同步。例如:您通过网站将插件添加到项目中,您的安装将自动安装它

我会回答我自己的问题。关于如何部署 10 月CMS 项目的讨论正在进行中,因此很难知道最佳实践是什么。

插件定义中的依赖

关系核心开发解决方案似乎在您的插件中添加依赖项作为数组:

/**
* @var array Plugin dependencies
*/
public $require = ['RainLab.Blog', 'RainLab.User', 'RainLab.Pages', 'Manogi.Mediathumb'];```

就我而言,虽然依赖项没有自动安装,虽然我收到警告,但我的插件仍然加载错误。

使用作曲家

我意识到来自 RainLab 的插件有一个 composer.json 文件,其中october-plugin作为类型(例如,参见 RainLab.User 插件)。

因此,您只需将插件作为任何作曲家包,它们将安装在您的plugin/目录中:

composer require rainlab/user-plugin

不过,并非每个插件都有此约定,例如Manogi.Mediathumb插件。我没有尝试要求它,但我猜它会安装在vendor/目录中。

示例composer.json要求:

"require": {
"php": ">=5.5.9",
"october/rain": "~1.0",
"october/system": "~1.0",
"october/backend": "~1.0",
"october/cms": "~1.0",
"laravel/framework": "5.1.*",
"wikimedia/composer-merge-plugin": "dev-master",
"vojtasvoboda/oc-twigextensions-plugin": "dev-master",
"rainlab/blog-plugin": "dev-master",
"rainlab/pages-plugin": "dev-master",
"rainlab/user-plugin": "dev-master",
}

忽略 git 中的插件文件夹

至于忽略供应商插件,您可以在.gitignore文件中添加规则,忽略除命名空间之外的每个插件:

plugins/*
!plugins
!plugins/mynamespace/

禁用 CMS 中的更新功能

最后一步是更改config/cms.php中的disableCoreUpdates变量:

'disableCoreUpdates' => true,

如本文件的评论部分所述:

如果使用 composer 或 git 将更新下载到核心文件,请将此值设置为"true",以防止更新网关在应用程序更新过程中再次尝试下载这些文件。插件和主题仍将下载。

使用作曲家更新

现在,如果要更新核心包和插件,请运行

composer update

在 10 月网站上创建项目

建议在这里。不过,我不喜欢依赖这种东西的服务。


结论

我想前两种方法是有效的,取决于您是想在 CLI 中更新还是直接在 CMS 中更新(我猜您是否希望您的客户能够更新)。

我将再次测试第一个,看看我是否可以让CMS自动下载插件。如果我成功了,我将使用此解决方案,因为我可以使用 CMS 和命令行进行更新php artisan october:update.两全其美。

相关内容

  • 没有找到相关文章

最新更新