Apakah saya perlu melihat modul saya secara manual setiap kali saya menggunakan kode inti Magento dan menambahkan baris: ... ke composer.json?
Ya, setiap kali dalam kode Anda, Anda menggunakan apa pun dari modul inti Anda perlu menambahkannya ke komposer Anda butuhkan. Seperti yang Anda inginkan agar urutan pemuatan Anda setelah modul inti, saya juga menyarankan untuk menambahkannya ke module.xml
file Anda di bagian urutan.
Atau ada alat otomatis yang dapat melakukannya untuk saya?
Saya belum menemukan apa pun. Jika ada tolong beri tahu saya. Ini harus menjadi alat yang cukup canggih dan kemungkinan akan membutuhkan cakupan pengujian yang substansial dan kemudian menjalankan matriks versi yang berbeda untuk menghasilkan perangkat kerja.
Bagaimana cara menentukan versi untuk dimasukkan dalam composer.json saya? Haruskah itu versi modul spesifik yang telah saya kembangkan? Atau haruskah saya melibatkan semacam wildcard? Atau apakah saya perlu mengambil keputusan berdasarkan pengorbanan? Jika demikian, apa pengorbanan yang terlibat untuk setiap gaya menentukan versi?
Opsi untuk menentukan nomor versi
100.0.2
Hanya berfungsi saat versi spesifik ini
100.0.*
*
adalah wildcard dan dapat diganti dengan nomor versi
100.0.0
, 100.0.1
, ...
,100.0.120
~100.0.2
Membuat 2 wildcard yang hanya bisa naik jadi 100.0.2
, 100.0.3
, ...
,100.0.120
^100.0.2
Memungkinkan setiap rilis sampai 101 sehingga 100.0.2
, 100.0.3
, ...
, 100.1.0
,100.2.5
Untuk opsi 2-4 jika pengaturan stabilitas Anda mengizinkannya juga akan menyertakan versi seperti 100.0.1-beta
Penggunaan praktis
Opsi 1.) adalah yang paling berhati-hati, Anda tahu versi mana yang Anda kembangkan dan hanya menerima bekerja dengan versi khusus ini - modul Anda hanya dapat diinstal bersama modul tertentu pada versi itu. Semua upaya pemasangan / peningkatan lainnya akan gagal dengan pesan komposer yang menyoroti bahwa ia tidak dapat menemukan serangkaian komponen yang dapat diinstal.
Opsi 2.) Saya pikir dapat dianggap sebagai non-opsi seperti yang dicakup oleh Opsi 3.) jika Anda suka ~100.0.0
Opsi 3.) Kompatibel selama tidak ada fitur baru yang diperkenalkan
Opsi 4.) Kompatibel selama tidak ada perubahan yang melanggar diperkenalkan
Trade Offs
1 Ekstensi Anda hanya berfungsi untuk 1 versi modul Magento (secara teknis jika tidak ada perubahan dalam modul, nomor versi tidak boleh bertambah dan beberapa versi Proyek Magento secara teoritis dapat mencakup modul inti Magento yang sama dengan versi yang sama. Praktis saya belum melihat ini dan sepertinya memerlukan beberapa proses perubahan pada akhir Magento lihat di sini). Karena Anda sangat terikat dengan 1 versi modul inti Magento, Anda akan mendapatkan banyak rilis dan versi ekstensi Anda sendiri, jika Anda ingin tetap kompatibel.
3-4 Ekstensi Anda berfungsi dengan beberapa versi Magento dan Anda tidak perlu merilis versi ekstensi yang berbeda setiap kali Magento merilis versi baru. Kelemahannya di sini adalah Anda mengklaim kompatibilitas meskipun perubahan dapat dilakukan di Magento yang tidak kompatibel dengan kode Anda sendiri. Risiko ini nyata karena definisi Magento tentang versi semantik untuk rilis modul mereka sendiri hanya mencakup apa yang ditandai dengan @api
anotasi (lebih lanjut tentang ini dalam masalah GitHub ini ) dengan cakupan terbatas.
tl; dr;
100.0.2
Mainkan dengan aman, banyak rilis yang harus Anda
^100.0.2
pelihara untuk Anda Versi Semantic bagaimana seharusnya bekerja, lebih sedikit rilis untuk Anda tetapi dengan risiko lebih tinggi karena saat ini ruang lingkup terbatas dari @api
kelas dan metode yang dijelaskan. Jika Anda memiliki ekstensi yang 100% menggunakan kelas dan metode sanksi, ini akan menjadi pilihan yang jelas.