Magento 2:最小作曲家文件


9

我看到无常互联网(例如Twitter)上浮现出一些东西,最近对Magento 2进行了一些更改,使得可以通过composer将模块安装到供应商目录中,并且Magento 2将看到您的模块而没有任何符号链接假装。

如果是这样,composer.json模块开发人员是否可以使用一个“最小”文件来与模块一起使用,以使Magento 2用户将其安装到系统中?


您可能想看看github.com/magento/magento2/pull/1206。我相信,它允许magento模块存在于供应商中。
路加·罗杰斯

Answers:


6

更新资料

看起来有些事情随着developer分支中的一些最新更改(10月7日)发生了变化。现在看来,可以支持供应商目录中的模块了。

我创建了两个安装模块的示例。一个将文件复制到应用程序/代码,另一个将文件驻留在供应商目录中的模块注册。

复制策略:https : //github.com/mttjohnson/magento2-sample-module-minimal-register 注册策略:https : //github.com/mttjohnson/magento2-sample-module-minimal-register

出于开发目的,我认为利用注册策略更有用,因为可以直接修改,测试并随后将由Magento运行的文件提交回模块存储库。

原始答案

如果您composer.json的模块编辑器软件包的文件包含的类型,magento2-module则默认情况下,文件将被复制到目录中指定的映射目录中app/code

{
    "name": "vendorname/module-name",
    "type": "magento2-module",
    "require": {
        "magento/magento-composer-installer": "*"
    },
    "extra": {
        "map": [
            [
                "module",
                "VendorName/ModuleName"
            ]
        ]
    }
}

在此示例composer.json中,composer软件包名称vendorname/module-name将导致将composer软件包的文件放入vendor/vendorname/module-name

的特殊类型magento2-module通过magento / magento-composer-installer软件包中的composer-plugin实现。这就是为什么我在require部分列出了它的原因。正是这个composer-plugin将文件复制到适当的magento app/code目录中。

extra: {map: [["composerDir","MagentoDir"]]}部分由作曲家插件安装参考知道映射你的作曲家包的一部分,你的Magento目录结构的哪一部分。在提供的示例中,该操作会将vendor/vendorname/module-name/module文件从那里复制到app/code/VendorName/ModuleName


地图部分在这里吗?据我了解,此拉取请求成功了,因此您不需要使用插件即可将作曲家与Magento模块配合使用-Magento可以自行寻找供应商。github.com/magento/magento2/pull/1206
Alan Storm

通读您提到的PR底部的一些注释,看起来虽然PR被合并,但它并不完全支持composer供应商文件夹中的模块。
mttjohnson

1

看起来像这样的事情应该可以解决问题。

{
    "name": "pulsestorm/module-name",
    "description": "A description of your extension",
    "authors": [
        {
            "name": "Robert Hoffner",
            "email": "rhoffner@example.com"
        }
    ],
    "require": {},
    "autoload": {
        "psr-4": {
            "Package\\Module\\": "src/path/to/Package/Module/Package/Module",
        },        
        "files": [
            "src/path/to/Package/Module/registration.php",
        ]
    }    
}

这里的关键是自动加载器部分。它设置了一个指向您的类文件的PSR-4自动加载器,自动加载registration.php。当composer将文件放入供应商并重新生成自动加载文件时,Magento应该能够看到您的模块。

这样做的一个很好的副作用-不再需要包含代码app/code


我对此感到困惑。我读到的有关创建自己的模块的所有内容都使我将文件放入应用程序/代码中。1)这是如何工作的?2)为什么这样整洁?
kevando '16
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.