magento 2 - Dalam hal apa kita perlu menjalankan perintah ini pengaturan magento: di: compile?

12

Dalam hal apa kita perlu menjalankan perintah ini magento setup:di:compile?

MrTo-Kane
sumber
Setelah Anda menginstal modul baru dan ingin menghapus beberapa arahan
Jaleel
dan yang lainnya?
MrTo-Kane
Juga ketika Anda beralih ke mode produksi karena dalam mode itu, tidak ada konten statis yang dihasilkan; semuanya dilayani daripub/static
Steve Johnson

Jawaban:

8
  • 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:compilesetiap 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/diuntuk menonaktifkannya.

Fabian Schmengler
sumber
1
setup: di: compile-multi-tenant telah dihapus
Antonino Bonumore
Bisakah kami mendapatkan konfirmasi apakah menghapus trik folder var / di berfungsi? Sepertinya tidak bagi saya
Wildcard27
@ Wildcard27 bagaimana jika Anda juga menghapus direktori var/generation?
Fabian Schmengler
@FabianSchmengler Baru saja membuat Actionuntuk menguji. - Memuat halaman, kesalahan. - Dihapus didan generationfolder, dimuat ulang, berfungsi. - Tambahkan ketergantungan baru, muat ulang halaman, kesalahan. Namun tidak ada difolder yang dibuat. - Hapus generationlagi, 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.
Wildcard27
1

Sesuai komentar saya pada jawaban lain:

Anda dapat menghindari menjalankan setup:di:compileperintah setelah setiap kali Anda menambahkan keadaan dengan hanya menghapus var/didan var/generationfolder sebelum memuat ulang halaman .

Dari pengujian saya sendiri, Magento akan membuat ulang var/generationfolder, tetapi tidak var/difolder sampai setup:di:compiledijalankan kembali. Ini berarti Anda hanya perlu var/generationmenghapus 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:deployatau `setup: di: compile.

Sebagai referensi, saya menjalankan versi 2.1.5 .

Wildcard27
sumber
0

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.

Suresh Chikani
sumber
1
"Ini adalah masalah kinerja dan keamanan, dan mendiskusikannya secara penuh berada di luar cakupan artikel ini." ini memberikannya. salinan terang-terangan dari Alan Storm: alanstorm.com/magento_2_di_compile_pre-scan_with_commerce_bug
Fabian Schmengler