Dalam hal apa kita perlu menjalankan perintah ini magento setup:di:compile
?
magento2
extensions
cli
MrTo-Kane
sumber
sumber
pub/static
Jawaban:
Selama penyebaran (yaitu ketika perubahan dilakukan ke sistem dalam mode produksi)
Perhatikan bahwa dalam mode produksi (versi 2.0.5 dan sebelumnya) Anda harus menggunakan kompilasi "multi-tenant". Diperbaiki pada 2.0.6 dan yang lebih baru.
Lihat: http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-compiler.html
Anda juga dapat menggunakan kompilasi dalam mode pengembangan, yang seharusnya mempercepat situs, tetapi di sisi lain memperlambat pengembangan, karena Anda perlu menjalankan
bin/magento setup:di:compile
setiap kali Anda menambahkan kelas baru dengan dependensi (parameter konstruktor) atau mengubah dependensi dari kelas yang ada .Ini opsional, dan mungkin itu bukan ide yang baik. Jika Anda sudah menjalankan kompilasi di lingkungan pengembangan Anda, hapus file-file itu
var/di
untuk menonaktifkannya.sumber
var/generation
?Action
untuk menguji. - Memuat halaman, kesalahan. - Dihapusdi
dangeneration
folder, dimuat ulang, berfungsi. - Tambahkan ketergantungan baru, muat ulang halaman, kesalahan. Namun tidak adadi
folder yang dibuat. - Hapusgeneration
lagi, muat ulang, berfungsi. Kesimpulan: Hapus folder pembuatan setelah menambahkan dependensi dan Anda tidak perlu menjalankannyasetup:di:compile
. Jika orang lain bisa mengkonfirmasi ini, itu akan luar biasa.Sesuai komentar saya pada jawaban lain:
Anda dapat menghindari menjalankan
setup:di:compile
perintah setelah setiap kali Anda menambahkan keadaan dengan hanya menghapusvar/di
danvar/generation
folder sebelum memuat ulang halaman .Dari pengujian saya sendiri, Magento akan membuat ulang
var/generation
folder, tetapi tidakvar/di
folder sampaisetup:di:compile
dijalankan kembali. Ini berarti Anda hanya perluvar/generation
menghapus folder.Lucunya, ini juga berfungsi dengan
pub/static/*
dansetup:static-content:deploy
. Ini karena Magento tampaknya membuat symlink ke file yang diperlukan jika konten statis dibangun oleh reload halaman, bukan CLI.Orang-orang di kantor kami mengalami masalah dalam menjalankan perintah di atas saat menggunakan Docker untuk Mac. Pemrosesan file terlalu lambat. Dengan menggunakan langkah-langkah di atas, pengembangan harus lebih cepat.
Mungkin sebaiknya dicatat bahwa ini tidak akan berfungsi ketika dalam mode produksi atau standar. Ini hanya untuk pengembangan. Seperti yang disebutkan oleh Fabian Schmengler, memuat ulang halaman awal akan lebih lambat dari biasanya, tetapi seharusnya tidak selambat berjalan
setup:static-content:deploy
atau `setup: di: compile.Sebagai referensi, saya menjalankan versi 2.1.5 .
sumber
Diambil dari blog Alan Storm .
Kompilasi Ketergantungan Injeksi
Untuk memulai, kita harus menjelaskan masalah yang coba dipecahkan oleh perintah ini. Saat Anda mengirim sistem Magento 2 ke produksi, Anda perlu menjalankan perintah berikut
Perintah ini memindai melalui kode di sistem Anda dan pra-menghasilkan sejumlah hal (kebanyakan terkait dengan sistem manajer objek dan injeksi ketergantungan) yang dimuat secara dinamis oleh Magento saat Anda menjalankan dalam mode pengembang. Ini adalah masalah kinerja dan keamanan, dan mendiskusikannya secara penuh berada di luar cakupan artikel ini.
sumber