选择要基于Magento版本通过Composer安装的文件


11

在安装者的模块中包含多个版本的代码,并让安装者根据要安装的Magento版本确定要部署的版本,将非常方便。

例如,对于Magento> 1.7,请使用system.xml,其中包括tooltip,嵌套group功能和其他现代功能,但对于较旧版本的Magento,请使用文件的精简版本,其中不包含那些(破坏性)声明。

这种方法也可以用于标准模块结构中的许多其他文件。

对于作曲家部署的选项mapmodmanpackage.xml据我所知,没有一个是有关于目标系统的任何情报。该package.xml选项不太可能更改,但map可以...

在我看来,将有许多扩展程序开发人员将从这种降级方法中受益。有没有人找到解决方法?

Answers:


8

我没有解决方法,对我来说这不是问题,但是我有一个可行的建议:

  1. 您需要维护单独的版本分支,以针对不同的Magento版本。根据某些作曲家的魔法,在同一版本中部署不同的文件将无法正常工作。因此,您的出行可能有一个1.x分支以便与较旧的Magento版本(例如,最高1.6版)兼容,而有一个2.x分支供更现代的版本兼容。相应地添加版本标签。当然,您可以根据需要维护任意数量的分支,并为每个Magento版本编写最佳代码,但是恕我直言,这是不值得的工作,一个“现代”分支和一个“传统”分支就足够了。由您决定,您希望与“现代”分支向后兼容的程度,甚至可以只是最新的次要版本。
  2. 像这样为Magento添加一个需求:

    "require": {
        "magento/magento-ce": "1.4-1.7"
    }

    "require": {
        "magento/magento-ce": ">=1.8"
    }
  3. 现在是不利的一面,即您不再具有完全影响力的部分:没有官方magento/magento-ce软件包,因此您扩展程序的用户可能会从社区托管的镜像(例如https://github.com/firegento/magento)安装Magento。-ce或从自己的存储库中。这些必须替换magento/magento-ce相同版本的“虚拟” 包(有一个占位符self.version,因此您无需为每个版本更新都调整composer.json):

    "replace": {
        "magento/magento-ce": "self.version"
    }

仅当上述约定被广泛接受且仅适用于通过作曲家依赖关系实际安装了Magento本身的用户时,这才有效。

因此,一种更实际的方法是仅遵循步骤1,并建议您的用户如果运行的Magento版本低于1.x,则需要其他分支/不同主版本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.