Ketika saya memulai proyek M2 baru, hal pertama yang akan saya lakukan adalah menginstal inti melalui komposer:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition
Sekarang saya dapat menulis modul dan tema khusus saya di bawah app/code. Saya kemudian akan menambahkan folder saya composer.*dan seluruh app/codeke VCS saya. Sejauh ini semuanya baik-baik saja.
Misalkan sekarang saya ingin menggunakan beberapa alat membangun untuk proyek saya, katakanlah Grunt atau Gulp.
Jika saya mengkomit saya sendiri
Gruntfile.js, ini akan ditimpa olehmagento/magento2-basepaket ketika saya menjalankancomposer installsetelah saya mengkloning repo.Jika saya mengkomit
gulpfile.js, saya tidak bisa mendefinisikan dependensi saya dalampackage.json, karena itu juga akan ditimpa olehmagento/magento2-base.Jika saya memutuskan untuk menggunakan pengaturan Grunt Magento dan ingin menyesuaikannya dengan mengedit file di bawah
/dev/tools/grunt(misalnyathemes.js), saya tidak bisa karena perubahan saya akan ditimpa olehmagento/magento2-base.
Pemahaman saya adalah Anda tidak bisa berbuat banyak dalam root dokumen Anda. Tentu saja ada banyak solusi untuk masalah ini:
- Saya bisa menjalankan
git checkout -hak setelah instalasi untuk mengatur ulang file saya sendiri - Saya bisa menyimpan file build saya di folder khusus,
/buildmisalnya - Saya bisa menggunakan alat bangunan yang berbeda, seperti Phing, Ant, atau Rake (pengembang frontend saya tidak akan begitu senang)
- Saya bisa mengganti
magento/magento2-basedengan paket khusus yang memiliki pemetaan khusus untuk file inti (tidak benar-benar optimal tapi hei, itu pilihan)
Saya pribadi tidak menyukai semua opsi ini, jadi saya ingin tahu apakah ada cara yang disukai atau lebih baik untuk mencapai apa yang saya coba lakukan.
Adakah yang mengalami masalah yang sama? Bagaimana Anda mengatasinya? Bagaimana Anda menyusun proyek Anda di bawah VCS?
MEMPERBARUI
Poin tambahan terkait dengan pengaturan proyek. Dalam percobaan saya, saya perhatikan bahwa pemasang komposer Magento memiliki bendera untuk penimpaan file:
"extra": {
"magento-force": "override"
}
Ini diperlakukan secara internal sebagai boolean jika saya tidak salah, jadi saya mencoba mengaturnya falseuntuk melewati pengesampingan. Ketika saya menjalankan composer installinstalasi saya gagal karena file sudah ada. Pada dasarnya, jika saya tidak membiarkan Magento menimpa file saya, saya tidak dapat menginstalnya.
Apa tujuan dari bendera ini? Apakah hanya mengira melakukan cek untuk saya? Bagi saya tidak masuk akal untuk jujur, tapi mungkin seseorang bisa menjelaskan masalah ini.
Gruntfile.js, gulpfile.jsdan package.jsondiselesaikan. Masalah yang dibahas dalam pertanyaan ini masih berlaku untuk versi Magento 2 yang lebih baru ketika Anda perlu mengubah themes.js, index.phpatau .htaccessmisalnya.