Виберіть, який файл слід встановити через Composer на основі версії Magento


11

Було б дуже зручно включати кілька версій коду в композиторський модуль і композитор розробляти, яку версію розгорнути на основі Magento версії встановлення.

Наприклад, для Magento> 1.7 використовуйте system.xml, що включає tooltip, вкладені groupта інші сучасні функції, але для старих версій Magento використовуйте зрізану версію файлу, яка не включає в себе ці (ламаючі) декларації.

Цей підхід може працювати і для багатьох інших файлів у стандартній структурі модуля.

Варіанти для розгортання композитора map, modmanабо package.xmlAFAIK, жоден з яких є якісь - або дані про цільову системі. Цей package.xmlваріант малоймовірно змінити, але mapміг би ...

Мені здається, було б багато розробників розширень, які б виграли від витонченого підходу до деградації. Хтось знайшов обхід для цього?

Відповіді:


8

У мене немає рішення, і це ще не було проблемою для мене, але у мене є пропозиція, яка могла б працювати:

  1. Вам потрібно підтримувати окремі гілки версій, щоб націлювати різні версії Magento. Розгортання різних файлів в одній і тій же версії залежно від композиторської магії не спрацює. Таким чином, ваш extesion може мати 1.xвідділення для сумісності зі старими версіями Magento (наприклад, до 1.6) та 2.xгілку для більш сучасних версій. Додайте теги версій відповідно. Звичайно, ви можете підтримувати стільки гілок, скільки хочете, і написати найкращий код для кожної версії Magento, але IMHO цього не варте зусиль, і однієї "сучасної" та однієї "спадкової" гілки має вистачити. Від вас залежить, наскільки ви хочете бути назад сумісними з "сучасною" галуззю, це може бути навіть лише остання незначна версія.
  2. Додайте таку вимогу для Magento:

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

    і

    "require": {
        "magento/magento-ce": ">=1.8"
    }
  3. Тепер настає зворотний бік - частина, на яку ви вже не маєте повного впливу: офіційного magento/magento-ceпакету немає , тому користувачі вашого розширення, ймовірно, встановлять Magento із дзеркала спільноти, керованого на зразок https://github.com/firegento/magento -ce або з власного сховища. Вони повинні замінити "віртуальний" magento/magento-ceпакет тієї самої версії (є заповнення заповнення self.version , так що вам не потрібно налаштовувати composer.json для кожного оновлення версії):

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

Це буде добре, лише якщо вищезгадана конвенція стане широко прийнятою і лише для користувачів, які насправді встановлюють Magento через композиторську залежність, яка, мабуть, не є більшістю.

Тому більш реалістичним підходом є лише дотримуватися кроку 1 та порадити вашим користувачам вимагати іншої основної версії / різної версії, якщо вони мають версію Magento старше 1.x.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.