【问题标题】:Plugin management and versioning in OctobercmsOctobercms 中的插件管理和版本控制
【发布时间】:2017-10-07 18:25:35
【问题描述】:

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

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

每次我克隆 repo 时是否必须再次执行此操作?

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

【问题讨论】:

  • 你的问题不清楚。 “不被忽视”是什么意思?
  • 我的意思是“不忽略 git”,已编辑。

标签: composer-php octobercms octobercms-plugins


【解决方案1】:

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

【讨论】:

  • 谢谢,不过我不想依赖他们的服务。
【解决方案2】:

我会回答我自己的问题。有一个 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 的命令行进行更新。两全其美。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多