Magento 2: Мінімальний файл композитора


9

Я бачив декілька речей, що плавають навколо постійного Інтернету (тобто Twitter), що деякі останні зміни Magento 2 дозволяють встановити модуль у каталог постачальників через композитора, а Magento 2 побачить ваш модуль без будь-яких символічних зв'язків .

Якщо це правда, чи існує "мінімальний composer.json" файл, який розробники модулів можуть використовувати разом зі своїми модулями, щоб користувачі Magento 2 встановили їх у свої системи?


Ви можете подивитися на github.com/magento/magento2/pull/1206 . Це дозволило модулям magento жити всередині постачальника, я вважаю.
Люк Роджерс

Відповіді:


6

Оновлення

Схоже, декілька речей змінилися деякими останніми змінами (7 жовтня) у галузі розвитку. Зараз схоже, що можливо підтримувати модуль, що живе в каталозі постачальників.

Я створив два приклади установки модулів. Один, який копіює файли в додаток / код, і інший, який реєструє модуль, де він знаходиться в каталозі постачальників.

Стратегія копіювання: https://github.com/mttjohnson/magento2-sample-module-minimal-copy Стратегія реєстрації: 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 ім'я пакета композитора vendorname/module-nameпризведе до розміщення файлів для пакета композиторів vendor/vendorname/module-name.

Спеціальний тип magento2-moduleреалізації реалізований як композитор-плагін у пакеті magento / magento-composer-installer . Ось чому я перерахував це в розділі вимагати. Саме цей плагін-композитор робить копіювання файлів у відповідний app/codeкаталог magento .

extra: {map: [["composerDir","MagentoDir"]]}Розділ , на який посилається композитор-плагін монтажником , щоб дізнатися , яка частина вашого пакету композитора до карти , в якій частині структури каталогів Magento. У наведеному прикладі це займе vendor/vendorname/module-name/moduleі копіює файли звідти app/code/VendorName/ModuleName.


чи є тут розділ карт прав? Наскільки я розумів, що цей запит на тягнення зробив це так, що вам не потрібно було плагіну використовувати композитор з модулями Magento - що Magento буде шукати постачальника самостійно. github.com/magento/magento2/pull/1206
Алан Шторм

Читаючи деякі коментарі в нижній частині згадуваного вами PR, схоже, ніби PR був об'єднаний, він не повністю підтримує модулі, що знаходяться в папці постачальника композиторів.
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. Коли композитор скидає файли у постачальника та знову генерує файли автозавантаження, Magento повинен мати можливість бачити ваш модуль.

Один акуратний побічний ефект цього - код більше не повинен бути app/code!


Мене це бентежить. Все, що я читав про створення власного модуля, змушує мої файли додаватись у додаток / код. 1) Як це працює і 2) Чому це охайно?
кевандо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.