我想知道如何在 Octobercms 中对项目的插件依赖项进行版本控制。
当我使用 commandphp artisan plugin:install PLUGIN
时,所有插件文件都添加到plugins/
文件夹中,git不会忽略。
每次克隆 repo 时都必须再次执行此操作吗?
没有更好的解决方案(子模块、作曲家)吗?
我想知道如何在 Octobercms 中对项目的插件依赖项进行版本控制。
当我使用 commandphp artisan plugin:install PLUGIN
时,所有插件文件都添加到plugins/
文件夹中,git不会忽略。
每次克隆 repo 时都必须再次执行此操作吗?
没有更好的解决方案(子模块、作曲家)吗?
只需在他们的网站上创建项目,将插件添加到创建的项目并将安装与该项目相关联。插件将自动更新以及它们将被同步。例如:您通过网站将插件添加到项目中,您的安装将自动安装它
我会回答我自己的问题。关于如何部署 OctoberCMS 项目的讨论正在进行中,因此很难知道最佳实践是什么。
核心开发解决方案似乎在您的插件中添加依赖项作为 Array :
/**
* @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",
}
至于忽略供应商插件,您可以在.gitignore
文件中添加规则,忽略除命名空间之外的所有插件:
plugins/*
!plugins
!plugins/mynamespace/
最后一步是更改disableCoreUpdates
变量config/cms.php
:
'disableCoreUpdates' => true,
如本文件的评论部分所述:
如果使用 composer 或 git 下载核心文件的更新,请将此值设置为“true”,以防止更新网关在应用程序更新过程中再次尝试下载这些文件。插件和主题仍将被下载。
现在如果你想更新核心包和插件,运行
composer update
建议在这里。不过,我不喜欢依赖此类服务的服务。
我想前两种方法是有效的,取决于你是想在 CLI 中更新还是直接在 CMS 中更新(我猜你是否希望你的客户端能够更新)。
我将再次测试第一个,看看我是否可以让 CMS 自动下载插件。如果我成功了,我将使用这个解决方案,因为我可以从 CMS 和命令行使用php artisan october:update
. 两全其美。