我想知道如何在Octobercms中对项目的插件依赖项进行版本化。
当我使用命令php artisan plugin:install PLUGIN
时,所有插件文件都会添加到plugins/
文件夹中,而不会被git忽略。
每次克隆回购时我都必须再次执行此操作吗?
是不是有更好的解决方案(子模块,作曲家)?
答案 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",
}
至于忽略供应商插件,您可以在.gitignore
文件中添加忽略除命名空间之外的每个插件的规则:
plugins/*
!plugins
!plugins/mynamespace/
最后一步是更改disableCoreUpdates
中的config/cms.php
变量:
'disableCoreUpdates' => true,
如此文件中的评论部分所述:
如果使用composer或git下载核心文件的更新,请将此值设置为' true'防止更新网关在应用程序更新过程中再次尝试下载这些文件。插件和主题仍将被下载。
现在,如果您想更新核心软件包和插件,请运行
composer update
建议在这里。我不是粉丝,依赖于这类服务的服务。
我想这两种方法是有效的,取决于您是想在CLI中更新还是直接在CMS中更新(也就是说您是否希望您的客户能够更新我猜)。
我将再次测试第一个,看看我是否可以让CMS自动下载插件。如果我成功了,我将使用此解决方案,因为我可以使用php artisan october:update
从CMS和命令行进行更新。两全其美。