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/code
ke 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-base
paket ketika saya menjalankancomposer install
setelah 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,
/build
misalnya - Saya bisa menggunakan alat bangunan yang berbeda, seperti Phing, Ant, atau Rake (pengembang frontend saya tidak akan begitu senang)
- Saya bisa mengganti
magento/magento2-base
dengan 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 false
untuk melewati pengesampingan. Ketika saya menjalankan composer install
instalasi 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.js
dan package.json
diselesaikan. Masalah yang dibahas dalam pertanyaan ini masih berlaku untuk versi Magento 2 yang lebih baru ketika Anda perlu mengubah themes.js
, index.php
atau .htaccess
misalnya.