0

我想知道如何在 Octobercms 中对项目的插件依赖项进行版本控制。

当我使用 commandphp artisan plugin:install PLUGIN时,所有插件文件都添加到plugins/文件夹中,git不会忽略。

每次克隆 repo 时都必须再次执行此操作吗?

没有更好的解决方案(子模块、作曲家)吗?

4

2 回答 2

2

只需在他们的网站上创建项目,将插件添加到创建的项目并将安装与该项目相关联。插件将自动更新以及它们将被同步。例如:您通过网站将插件添加到项目中,您的安装将自动安装它

于 2017-05-20T18:05:13.693 回答
0

我会回答我自己的问题。关于如何部署 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",
}

忽略 git 中的插件文件夹

至于忽略供应商插件,您可以在.gitignore文件中添加规则,忽略除命名空间之外的所有插件:

plugins/*
!plugins
!plugins/mynamespace/

禁用 CMS 中的更新功能

最后一步是更改disableCoreUpdates变量config/cms.php

'disableCoreUpdates' => true,

如本文件的评论部分所述:

如果使用 composer 或 git 下载核心文件的更新,请将此值设置为“true”,以防止更新网关在应用程序更新过程中再次尝试下载这些文件。插件和主题仍将被下载。

用作曲家更新

现在如果你想更新核心包和插件,运行

composer update

在十月网站上创建一个项目

建议在这里。不过,我不喜欢依赖此类服务的服务。


结论

我想前两种方法是有效的,取决于你是想在 CLI 中更新还是直接在 CMS 中更新(我猜你是否希望你的客户端能够更新)。

我将再次测试第一个,看看我是否可以让 CMS 自动下载插件。如果我成功了,我将使用这个解决方案,因为我可以从 CMS 和命令行使用php artisan october:update. 两全其美。

于 2017-05-23T08:16:42.257 回答