我会回答我自己的问题。有一个 ongoing discussion 作为 OctoberCMS 项目的部署方式,因此很难知道最佳实践是什么。
插件定义中的依赖关系
核心开发者solution 似乎在你的插件中添加依赖作为一个数组:
/**
* @var array Plugin dependencies
*/
public $require = ['RainLab.Blog', 'RainLab.User', 'RainLab.Pages', 'Manogi.Mediathumb'];```
在我的情况下,虽然没有自动安装依赖项,当我收到警告时,我的插件仍然加载错误。
使用作曲家
我意识到 RainLab 的插件有一个 composer.json 文件,其类型为 october-plugin(例如,请参阅 RainLab.User 插件)。
所以你可以简单地要求一个插件作为任何 composer 包,它们会安装在你的 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
在十月网站上创建一个项目
在这里推荐。不过,我不喜欢依赖此类服务的服务。
结论
我猜前两种方法是有效的,取决于您是想在 CLI 中更新还是直接在 CMS 中更新(我猜您是否希望您的客户端能够更新)。
我会再次测试第一个,看看我是否可以让 CMS 自动下载插件。如果我成功了,我将使用这个解决方案,因为我可以从 CMS 和使用php artisan october:update 的命令行进行更新。两全其美。