Perintah kompilasi mana yang diperlukan dalam mode pengembang dan kapan?

24

Adakah yang bisa memberi saya petunjuk kapan harus menjalankan perintah kompilasi mana dalam mode pengembang Magento 2? Saya tidak yakin apakah saya sudah memahaminya.

Di devdocs, mode pengembang dijelaskan sebagai berikut:

  • File tampilan statis tidak di-cache; mereka ditulis ke pub / direktori statis Magento setiap kali mereka dipanggil

Apakah itu berarti, setiap file individual di pub / statis dihasilkan ketika diminta dan Anda tidak perlu menelepon setup:static-content:deploy? Ini bertentangan dengan pengalaman saya. Atau dapatkah saya menghapus file apa pun dan akan dibuat ulang? Juga, gambar, file CSS dan JS tampaknya diperlakukan berbeda.

Halaman dokumentasi mode pengembang tidak mengatakan apa pun tentang kompilasi kode, tapi saya pikir ada perbedaan juga, jadi itu tidak perlu dijalankan setup:di:compilesetelah semua perubahan dalam di.xmlfile. Apakah ini benar dan jika demikian, bagaimana cara kerja pembuatan kode dalam mode pengembang?

Dengan kata lain: selain cache, perintah mana yang harus saya jalankan setelah perubahan itu?

Fabian Schmengler
sumber

Jawaban:

27

perhatikan: Saya pernah mengalami bahwa dalam mode pengembang menghapus pub/staticakan merusak mekanisme karena Anda menyingkirkan .htaccessfile yang membuat keajaiban di folder itu.

Jika Anda menyimpan pub/static/.htaccessfile dalam mode pengembang, Anda tidak perlu menjalankan perintah kompilasi: Magento akan membuat symlink ke file segera setelah diminta. Itu berarti bahwa perubahan pada aset statis akan segera terlihat, asalkan Anda juga memiliki cache yang dinonaktifkan.

Anda dapat menghapus pub/static/frontendatau pub/static/adminhtmlsebagai gantinya.

Dalam mode default, aset terwujud dalam pub/staticsubfolder, artinya aset tersebut dibuat (disalin, bukan disinkronkan) pada permintaan pertama. Jika Anda memodifikasinya, Anda harus membersihkan cache untuk memperbaruinya.

Dalam mode produksi, aset tidak terwujud (menyebabkan 404 kesalahan HTTP atas permintaan) sampai Anda menjalankan bin/magento setup:static-content:deployperintah.

Semoga ini bisa membantu.

Alessandro Ronchi
sumber
Bagaimana dengan kompilasi DI?
Erfan
@ Erfan apa maksudmu lebih tepatnya?
Alessandro Ronchi
2
Pertanyaannya juga menanyakan tentang efek mode penyebaran pada kompilasi DI. Saya baru saja melakukan tes cepat, dan jika Anda dalam mode pengembang, Anda tidak perlu mengkompilasi DI agar perubahan Anda di.xmlmuncul (sepertinya pembuatan kode dilakukan dengan cepat per klik halaman?) Bagaimanapun, pikir itu akan menjadi tambahan yang bagus untuk jawaban Anda yang sudah bagus!
Erfan
Anda benar @ Erfan
Alessandro Ronchi
1+ Terima kasih saudara. Bekerja seperti pesona. Saya memiliki pengalaman yang sangat buruk dalam melaksanakan perintah penempatan berulang kali untuk mendapatkan perubahan dari kurang ke css bahkan dalam mode pengembang. Saya menyalin .htaccess dari proyek lain dan menempel di lokasi yang disebutkan. Khalaaa!
Umar Yousaf
4

dari pengalaman saya, Anda tidak perlu menjalankan perintah untuk pembuatan kode / file statis dalam mode pengembang.

Jika file statis tidak dibuat, mungkin ada masalah lain.

Saya melihat dua alasan untuk itu pada pandangan pertama:

  • mode pengembang tidak berfungsi dengan benar. mungkin aktivasi gagal karena beberapa alasan
  • penulisan ulang untuk file statis di pub / static.php tidak berfungsi
David Verholen
sumber
1
File saya yang lebih sedikit di pub / statis tidak menghasilkan ulang. Apakah Anda mendapatkan masalah ini. Cara membuatnya regenerasi otomatis
mrtuvn
Sangat penting bahwa mode pengembang aktif dan juga penulisan ulang berfungsi, karena permintaan untuk file statis ditulis ulang ke pub / static.php terlebih dahulu yang kemudian menghasilkan file (dalam mode pengembang) di bawah pub / statis jika belum ada
David Verholen
4

Apakah itu berarti, setiap file individual di pub / statis dihasilkan ketika diminta dan Anda tidak perlu menelepon setup:static-content:deploy? Ini bertentangan dengan pengalaman saya. Atau dapatkah saya menghapus file apa pun dan akan dibuat ulang?

Iya nih. Tetapi menurut pengalaman saya ini tidak bekerja sebagian besar waktu. Bisa jadi bug. Solusi yang lebih baik adalah menghapus pub/statickonten dan menyebarkan konten statis lagi setiap kali Anda mengubah file statis (js, css, html, dll.) Bahkan Anda sudah mengaktifkan mode pengembang. Pertanyaan saya sendiri tentang ini.

Janaka Dombawela
sumber
Itu tergantung cara Anda melihatnya. Jika Anda ingin menjalankan setup: static-content: deploy setiap kali Anda melakukan perubahan, Anda perlu waktu bertahun-tahun untuk menyelesaikan proyek karena pada dasarnya Anda membuat setiap file untuk toko Anda ketika Anda hanya memperbarui satu file. Jadi, solusi saya adalah menimpa file dalam pub / static dan membersihkan cache untuk melihat perubahan saya. Setelah saya puas dengan hasil saya maka saya akan pergi ke tema atau file modul kustom saya untuk menimpa file utama saya dan kemudian menjalankan pengaturan: konten statis: menyebarkan untuk memperbarui file statis saya.
Wolfgang Leon
4

Hanya untuk mengklarifikasi antara tiga mode yang berbeda (sumber: Magento U Fundamentals course). Tebal, poin-poin spesifik yang terkait dengan pertanyaan Anda.

mode pengembang

  • Materialisasi file statis tidak diaktifkan.
  • Pengecualian tidak tertangkap ditampilkan di browser
  • Pengecualian dilemparkan ke penangan kesalahan, tidak dicatat
  • Sistem masuk var/report, sangat terperinci.

Anda harus menggunakan mode Pengembang saat Anda sedang mengembangkan kustomisasi atau ekstensi. Manfaat utama mode ini adalah bahwa pesan kesalahan terlihat oleh Anda. Seharusnya tidak digunakan dalam produksi karena dampaknya pada kinerja. Dalam mode Pengembang, file tampilan statis dihasilkan setiap kali diminta. Mereka ditulis ke pub/staticdirektori, tetapi cache ini tidak digunakan. Ini memiliki dampak kinerja yang besar, tetapi setiap perubahan yang dilakukan pengembang untuk melihat file akan segera terlihat.

Pengecualian tanpa tertangkap ditampilkan di browser, alih-alih dicatat. Pengecualian dilemparkan setiap kali pelanggan acara tidak dapat dipanggil.

Sistem masuk var/reportsangat detail dalam mode ini.

Mode produksi

  • Fase penyebaran pada sistem produksi; kinerja tertinggi
  • Pengecualian tidak ditampilkan kepada pengguna - hanya ditulis untuk log.
  • Mode ini menonaktifkan materialisasi file statis.
  • Dokumen Magento dapat memiliki izin hanya baca.

Anda harus menjalankan Magento dalam mode Produksi setelah dikerahkan ke server produksi.

Mode produksi memberikan kinerja tertinggi di Magento 2.

Aspek paling penting dari mode ini adalah bahwa kesalahan dicatat ke sistem file dan tidak pernah ditampilkan kepada pengguna. Dalam mode ini, file tampilan statis tidak dibuat dengan cepat saat diminta; sebaliknya, mereka harus dikerahkan ke pub/staticdirektori menggunakan alat baris perintah. Halaman yang dihasilkan akan berisi tautan langsung ke sumber daya halaman yang digunakan.

Setiap perubahan untuk melihat file harus menjalankan alat penyebaran lagi.

Karena file tampilan dikerahkan menggunakan alat CLI, pengguna web harus memiliki akses tulis. Direktori Magento pub/staticdapat memiliki izin hanya baca, yang merupakan pengaturan yang lebih aman di server yang dapat diakses publik.

Mode standar

  • Digunakan saat tidak ada mode lain yang ditentukan
  • Menyembunyikan pengecualian dari pengguna dan menulisnya untuk mencatat file
  • Materialisasi file statis diaktifkan.
  • Tidak direkomendasikan / tidak dioptimalkan untuk produksi: kinerja dampak caching negatif.

Sesuai namanya, Mode default adalah cara perangkat lunak Magento beroperasi jika tidak ditentukan mode lain.

Dalam mode ini, kesalahan masuk ke file di var/reportsdan tidak pernah ditampilkan kepada pengguna. File tampilan statis diwujudkan dengan cepat dan kemudian di-cache.

Berbeda dengan mode pengembang, perubahan file tampilan tidak terlihat sampai file tampilan statis yang dihasilkan dihapus.

Mode default tidak dioptimalkan untuk lingkungan produksi, terutama karena dampak kinerja yang buruk dari file statis yang terwujud dengan cepat daripada membuat dan menggunakan mereka sebelumnya .

Dengan kata lain, membuat file statis dengan cepat dan menyimpannya memiliki dampak kinerja yang lebih besar daripada membuatnya menggunakan alat baris perintah pembuatan file statis.

Raphael di Digital Pianism
sumber