Dalam hal apa kita perlu menjalankan perintah ini magento setup:di:compile
?
pub/static
Dalam hal apa kita perlu menjalankan perintah ini magento setup:di:compile
?
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.
bin/magento setup:di:compile-multi-tenant
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.
var/generation
?
Action
untuk menguji. - Memuat halaman, kesalahan. - Dihapus di
dan generation
folder, dimuat ulang, berfungsi. - Tambahkan ketergantungan baru, muat ulang halaman, kesalahan. Namun tidak ada di
folder yang dibuat. - Hapus generation
lagi, muat ulang, berfungsi. Kesimpulan: Hapus folder pembuatan setelah menambahkan dependensi dan Anda tidak perlu menjalankannya setup: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 menghapus var/di
dan var/generation
folder sebelum memuat ulang halaman .
Dari pengujian saya sendiri, Magento akan membuat ulang var/generation
folder, tetapi tidak var/di
folder sampai setup:di:compile
dijalankan kembali. Ini berarti Anda hanya perlu var/generation
menghapus folder.
Lucunya, ini juga berfungsi dengan pub/static/*
dan setup: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 .
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
php bin/magento setup:di:compile
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.