Чи потрібно мені вручну переглядати мій модуль кожного разу, коли я використовую фрагмент основного коду Magento та додаю рядок вимагати: ... до composer.json?
Так, кожен раз, коли ви використовуєте що-небудь з основного модуля, вам потрібно додати його до вимог композитора. Оскільки ви, мабуть, хочете, щоб ваше замовлення завантажувалося після основного модуля, я б також запропонував додати його у свій module.xml
файл у розділі послідовностей.
Або є автоматизований інструмент, який може зробити це для мене?
Я ще не зустрічав жодного. Якщо є, будь ласка, повідомте мене. Це повинно бути досить складним інструментом і, ймовірно, вимагатиме значного покриття тесту, а потім запускає матрицю різних версій для створення робочого набору.
Як вказати версію, яку потрібно включити до свого composer.json? Чи повинна це бути конкретна версія модуля, проти якої я розроблений? Або я повинен задіяти якусь підстановку? Або мені потрібно приймати рішення на основі компромісів? Якщо так, то які компроміси пов'язані з кожним стилем версії?
Параметри для визначення номера версії
100.0.2
Працюйте лише тоді, коли ця конкретна версія
100.0.*
*
є підстановлювальний і може бути замінений будь-яким номером версії
100.0.0
, 100.0.1
, ...
,100.0.120
~100.0.2
Робить 2 груповий символ , який може йти тільки так 100.0.2
, 100.0.3
, ...
,100.0.120
^100.0.2
Дозволить будь-реліз аж до 101 так 100.0.2
, 100.0.3
, ...
, 100.1.0
,100.2.5
Для варіантів 2-4, якщо ваші налаштування стабільності дозволяють, він також включатиме такі версії, як 100.0.1-beta
Практичне використання
Варіант 1.) є найбільш обережним, ви знаєте, над якою версією ви розробили, і приймаєте лише роботу з цією конкретною версією - ваш модуль може бути встановлений лише поруч із цим модулем у цій версії. Усі інші спроби встановлення / оновлення закінчуються невдачею, якщо повідомлення композитора підкреслює, що він не може знайти встановлений набір компонентів.
Варіант 2.) Я думаю, що можна вважати таким, що не є варіантом, як охоплюється Варіант 3.), якщо ви використовуєте його як ~100.0.0
Варіант 3.) Будьте сумісні, доки не буде введено нових функцій
Варіант 4.) Будьте сумісні до тих пір, поки не буде внесено порушень
Торгівля
1 Ваше розширення працює лише для 1 версії модуля Magento (технічно, якщо в модулі немає змін, номер версії не повинен збільшуватися, і кілька версій Magento Project теоретично можуть включати той же основний модуль Magento з тією ж версією. Практично я я цього не бачив і схоже, що це вимагає певних змін у процесі Magento (див. тут). Оскільки ви настільки тісно пов'язані з 1 версією основного модуля Magento, ви отримуєте безліч версій та версій власного розширення, якщо хочете залишатися сумісними.
3-4 Ваше розширення працює з декількома версіями Magento, і вам не потрібно випускати різні версії розширення щоразу, коли Magento випускає нову версію. Мінусом тут є те, що ви заявляєте про сумісність, навіть якщо в Magento можна було внести зміни, несумісні з вашим власним кодом. Цей ризик є реальним, оскільки визначення Magento щодо семантичної версії для власних випусків модулів поширюється лише на те, що позначено @api
анотацією (детальніше про це у цьому випуску GitHub ) з обмеженою сферою застосування.
tl; dr;
100.0.2
Безпечно грайте, безліч випусків, щоб підтримувати для вас
^100.0.2
Semantic Versioning, як це має працювати, менше випусків для вас, але з більш високим ризиком через обмежений обсяг @api
анотованих класів та методів. Якби у вас було розширення, яке на 100% використовує санкціоновані класи та методи, це був би очевидний вибір.