Octobercms中的插件管理和版本控制

时间:2017-05-09 12:28:24

标签: composer-php octobercms octobercms-plugins

我想知道如何在Octobercms中对项目的插件依赖项进行版本化。

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

每次克隆回购时我都必须再次执行此操作吗?

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

我会回答我自己的问题。有一个ongoing discussion应该如何部署OctoberCMS项目,因此很难知道最佳做法是什么。

插件定义中的依赖项

核心开发者solution似乎在插件中添加依赖项作为数组:

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

在我的情况下虽然没有自动安装依赖项,但是当我收到警告时,我的插件仍然存在错误。

使用作曲家

我意识到RainLab的插件有一个带有october-plugin类型的composer.json文件(例如,参见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中的更新功能

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

'disableCoreUpdates' => true,

如此文件中的评论部分所述:

  

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

使用composer

进行更新

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

composer update

在10月的网站上创建一个项目

建议在这里。我不是粉丝,依赖于这类服务的服务。

结论

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

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