我想知道如何在 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
.两全其美。