Apakah mungkin untuk membuat kode sebelumnya untuk satu modul tertentu? IE - Saya dapat menghasilkan semua kode dalam sistem dengan
php bin/magento setup:di:compile
Namun, ini bisa memakan waktu lama. Saya ingin pra-menghasilkan hanya file untuk modul tertentu.
php bin/magento setup:di:compile Pulsestorm_Commercebug
Masalah khusus yang saya coba selesaikan adalah mengatasi masalah ini dengan beberapa plugin yang tidak dikenali dalam mode pengembang / default.
Jawaban:
Jawaban Singkat: Tidak. Itu tidak mungkin dengan alat yang dikirim bersama Magento sekarang.
Penjelasan: Kita harus membedakan pembuatan dan kompilasi kode . Compiler melakukan keduanya. Untuk kedua operasi kita perlu membaca konfigurasi semua modul magento lainnya, jika tidak outputnya akan salah atau tidak penuh.
Kompilasi untuk satu modul tidak masuk akal, karena magento tidak akan berfungsi dengan konfigurasi yang dikompilasi untuk satu modul saja.
Pembuatan untuk satu modul mungkin masuk akal, tetapi kita harus membaca konfigurasi dan tanda tangan konstruktor dari semua modul lainnya yang terpasang. Tanpa itu tidak semua kode dapat dihasilkan. Jadi operasi seperti itu tidak akan jauh lebih cepat daripada kompilasi penuh. Kami mungkin memikirkannya, tapi saya pikir bug yang Anda referensikan akan diperbaiki sebelum perintah diimplementasikan.
sumber
bin/magento
Eksekusi Magento hanyalah komponen Symfony Console. Ini berarti Anda dapat menemukan file individu bertanggung jawab untuk satu perintah. Penamaannya selalu sama sehingga untuk setup: di: compile Anda dapat menemukan DiCompileCommand.php (setup/src/Magento/Setup/Console/Command/DiCompileCommand.php
).Itu akan selalu menjalankan
exeucte()
metode sehingga di situlah kita perlu melihat. Dalam fungsi ini, Anda akan melihat$operations
var diatur, yang diisi olehgetOperationsConfiguration()
metode ini. Metode ini pada dasarnya memberi tahu DiCompileCommand apa yang harus dikompilasi.Hal pertama yang saya coba adalah mengembalikan hanya bagian generator kode aplikasi, seperti itu;
Ini berjalan cukup baik, waktu kompilasi berkurang secara dramatis;
Sebagai lawan;
Tentu saja, ini sudah diduga karena kami memotong beberapa hal. Tetapi Anda tidak menentukan file mana yang ingin Anda buat. Tidak semua file dapat dihasilkan berdasarkan per-modul, karena misalnya, kelas Interception dapat bergantung pada beberapa modul dan karenanya akan memberi Anda output fungsionalitas yang terbatas jika Anda hanya menjalankan ini untuk satu modul.
Anda dapat menemukan generator yang bertanggung jawab di sini;
Setiap kelas memiliki foreach di dalamnya, yang akan memungkinkan Anda untuk menambahkan if / else dengan terus melewati modul / jalur tertentu. Mungkin akan berguna untuk memeriksa dokumentasi Argumen Input Komponen Symfony Konsol tentang cara memasukkan argumen ke dalam perintah.
sumber
Anda dapat mengenali dengan
paket> modul> registrasi.php
dan kemudian lari
pendaftaran.php akan mengenali modul dan kompilasi modul kustom Anda.
Saya harap ini akan membantu Anda.
sumber
Ketika Anda mengubah konstruktor Anda untuk kelas yang dihasilkan dalam permintaan sebelumnya, itu akan rusak. Jika Anda berada dalam kebutuhan seperti itu cukup hapus
var/cache
,var/generation
danvar/di
(jika ada) dan segarkan halaman. Pastikan mode adalah pengembang tempat Anda bekerja.(Saya tidak mengatakan cara ini magento tidak akan mengkompilasi atau menghasilkan basis kode, ya itu akan. Melakukan cara ini, itu memberikan sedikit bantuan dari menjalankan "setup: di: compile" setiap kali Anda membuat perubahan dalam rute atau kelas Anda)
sumber