首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插件管理与版本管理

插件管理与版本管理
EN

Stack Overflow用户
提问于 2017-05-09 12:28:23
回答 2查看 989关注 0票数 0

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

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

每次克隆回购时我都要再做一次吗?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-23 08:16:42

我自己回答问题。有一个正在进行中 讨论作为如何部署OctoberCMS项目,所以很难知道最佳实践是什么。

插件定义中的依赖关系

核心dev 解决方案似乎将插件中的依赖项添加为数组:

代码语言:javascript
复制
/**
* @var array Plugin dependencies
*/
public $require = ['RainLab.Blog', 'RainLab.User', 'RainLab.Pages', 'Manogi.Mediathumb'];```

在我的例子中,虽然依赖项不是自动安装的,而且当我收到警告时,我的插件仍然装载错误。

使用作曲家

我意识到来自RainLab的插件有一个以october-plugin为类型的composer.json文件(例如,参见RainLab.User插件)。

因此,您只需将插件作为任何编写器包,它们就会安装在您的plugin/目录中:

代码语言:javascript
复制
composer require rainlab/user-plugin

不过,并不是每个插件都有这样的约定,比如Manogi.Mediathumb插件。我没有尝试要求它,但我猜它将安装在vendor/目录中。

示例composer.json需求:

代码语言:javascript
复制
"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文件中添加规则,忽略除命名空间之外的每个插件:

代码语言:javascript
复制
plugins/*
!plugins
!plugins/mynamespace/

禁用CMS中的更新功能

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

代码语言:javascript
复制
'disableCoreUpdates' => true,

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

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

与作曲家一起更新

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

代码语言:javascript
复制
composer update

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

建议在这里。不过,我不是那种依赖于这种服务的粉丝。

结论

我认为第一种方法是有效的,并且取决于您想要在CLI中更新还是直接在CMS中更新(我猜您是否希望您的客户端能够更新)。

我将再次测试第一个,看看我是否可以让CMS下载插件自动。如果我成功了,我将使用这个解决方案,因为我可以使用php artisan october:update从CMS和命令行进行更新。这两个世界都是最好的。

票数 0
EN

Stack Overflow用户

发布于 2017-05-20 18:05:13

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43869868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档