我想知道如何在Octobercms中对项目的插件依赖项进行版本化。
当我使用命令php artisan plugin:install PLUGIN时,所有插件文件都会添加到plugins/文件夹中,而不会被git忽略。
每次克隆回购时我都要再做一次吗?
难道没有更好的解决方案(子模块、作曲家)吗?
发布于 2017-05-23 08:16:42
我自己回答问题。有一个正在进行中 讨论作为如何部署OctoberCMS项目,所以很难知道最佳实践是什么。
插件定义中的依赖关系
核心dev 解决方案似乎将插件中的依赖项添加为数组:
/**
* @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 update在十月的网站上创建一个项目
建议在这里。不过,我不是那种依赖于这种服务的粉丝。
结论
我认为第一种方法是有效的,并且取决于您想要在CLI中更新还是直接在CMS中更新(我猜您是否希望您的客户端能够更新)。
我将再次测试第一个,看看我是否可以让CMS下载插件自动。如果我成功了,我将使用这个解决方案,因为我可以使用php artisan october:update从CMS和命令行进行更新。这两个世界都是最好的。
发布于 2017-05-20 18:05:13
只需在他们的网站上创建项目,将插件添加到创建的项目中,并将安装与该项目相关联。插件将自动更新以及他们将同步。例如:通过网站将插件添加到项目中,您的安装将自动安装它。
https://stackoverflow.com/questions/43869868
复制相似问题