ต้องการคำสั่งการรวบรวมใดในโหมดนักพัฒนาซอฟต์แวร์และเมื่อใด


24

ใครสามารถให้คำแนะนำฉันเมื่อเรียกใช้คำสั่งการคอมไพล์ในโหมดนักพัฒนา Magento 2 ได้หรือไม่ ฉันไม่แน่ใจว่าฉันเข้าใจถูกต้องหรือยัง

ใน devdocs โหมดนักพัฒนาซอฟต์แวร์จะอธิบายดังนี้:

  • ไฟล์มุมมองคงที่จะไม่ถูกแคช; พวกเขาถูกเขียนไปยัง Magento pub / static directory ทุกครั้งที่มีการเรียก

หมายความว่าแต่ละไฟล์ใน pub / static ถูกสร้างขึ้นเมื่อมีการร้องขอและคุณไม่จำเป็นต้องโทรsetup:static-content:deployหรือไม่ สิ่งนี้ขัดแย้งกับประสบการณ์ของฉัน หรือฉันสามารถลบไฟล์ใด ๆ และพวกเขาจะถูกสร้างใหม่? นอกจากนี้รูปภาพ, ไฟล์ CSS และ JS ก็ดูเหมือนจะได้รับการปฏิบัติแตกต่างกันไป

หน้าเอกสารสำหรับโหมดผู้พัฒนาไม่ได้พูดอะไรเกี่ยวกับการรวบรวมรหัส แต่ฉันคิดว่ามีความแตกต่างเช่นกันดังนั้นจึงไม่จำเป็นต้องเรียกใช้setup:di:compileหลังจากการเปลี่ยนแปลงทั้งหมดในdi.xmlไฟล์ สิ่งนี้ถูกต้องหรือไม่ถ้าการสร้างรหัสทำงานอย่างไรในโหมดนักพัฒนาซอฟต์แวร์

ในคำอื่น ๆ :แคชกันฉันต้องรันคำสั่งใดหลังจากที่เปลี่ยนแปลง?

คำตอบ:


27

ให้ความสนใจ: ฉันมีประสบการณ์ว่าในโหมดนักพัฒนาซอฟต์แวร์การลบpub/staticจะทำลายกลไกเนื่องจากคุณกำจัด.htaccessไฟล์ที่ทำให้เวทมนต์ในโฟลเดอร์นั้น

หากคุณเก็บpub/static/.htaccessไฟล์ไว้ในโหมดนักพัฒนาซอฟต์แวร์คุณไม่จำเป็นต้องเรียกใช้คำสั่งการคอมไพล์: วีโอไอพีจะสร้าง symlink ไปยังไฟล์ทันทีที่มีการร้องขอ ซึ่งหมายความว่าการเปลี่ยนแปลงในสินทรัพย์คงที่จะสามารถมองเห็นได้ทันทีหากคุณยังปิดการใช้งานแคช

คุณสามารถลบpub/static/frontendหรือpub/static/adminhtmlแทน

ในสินทรัพย์โหมดเริ่มต้นจะปรากฏในpub/staticโฟลเดอร์ย่อยซึ่งหมายถึงพวกเขาจะสร้างขึ้น (คัดลอกไม่ได้เชื่อมโยง) เมื่อมีการร้องขอครั้งแรก หากคุณแก้ไขพวกเขาคุณต้องล้างแคชเพื่อให้พวกเขาปรับปรุง

ในเนื้อหาโหมดการผลิตจะไม่ปรากฏ (ทำให้เกิดข้อผิดพลาด 404 HTTP ตามคำขอ) จนกว่าคุณจะรันbin/magento setup:static-content:deployคำสั่ง

หวังว่ามันจะช่วย


แล้วการรวบรวม DI ล่ะ
Erfan

@Erfan คุณหมายถึงอะไรที่แม่นยำยิ่งขึ้น?
Alessandro Ronchi

2
คำถามนี้ยังสอบถามเกี่ยวกับผลกระทบของโหมดการปรับใช้ในการรวบรวม DI ฉันเพิ่งทำการทดสอบอย่างรวดเร็วและถ้าคุณอยู่ในโหมดนักพัฒนาคุณไม่จำเป็นต้องคอมไพล์ DI เพื่อให้การเปลี่ยนแปลงของคุณdi.xmlปรากฏขึ้น คิดว่ามันจะเป็นการตอบรับที่ดีของคุณ!
Erfan

คุณถูกต้อง @Erfan
Alessandro Ronchi

1+ ขอบคุณพี่ชาย ทำงานเหมือนจับใจ ฉันมีประสบการณ์ที่ไม่ดีนักในการเรียกใช้คำสั่งซ้ำ ๆ เพื่อรับการเปลี่ยนแปลงจากน้อยไปเป็น css แม้ในโหมดนักพัฒนาซอฟต์แวร์ ฉันคัดลอก. htaccess จากโครงการอื่นและวางที่ตำแหน่งที่กล่าวถึง Khalaaas!
Umar Yousaf

4

จากประสบการณ์ของฉันคุณไม่จำเป็นต้องเรียกใช้คำสั่งใด ๆ สำหรับการสร้างรหัส / ไฟล์คงที่ในโหมดนักพัฒนาซอฟต์แวร์

หากไฟล์สแตติกไม่ได้ถูกสร้างขึ้นอาจมีปัญหาอื่น

ฉันเห็นเหตุผลสองประการสำหรับเรื่องนี้ตั้งแต่แรกเห็น:

  • โหมดนักพัฒนาซอฟต์แวร์ทำงานไม่ถูกต้อง อาจเปิดใช้งานล้มเหลวด้วยเหตุผลบางอย่าง
  • การเขียนซ้ำสำหรับไฟล์แบบคงที่ใน pub / static.php ไม่ทำงาน

1
ไฟล์ของฉันน้อยลงใน pub / static ไม่ได้สร้างใหม่ คุณได้รับปัญหานี้ไหม วิธีทำให้มันงอกใหม่อัตโนมัติ
mrtuvn

เป็นสิ่งสำคัญที่โหมดนักพัฒนาซอฟต์แวร์แอ็คทีฟและการเขียนซ้ำยังทำงานอยู่เนื่องจากการร้องขอไฟล์สแตติกใด ๆ จะถูกเขียนใหม่ไปที่ pub / static.php ก่อนจากนั้นจึงสร้างไฟล์ (ในโหมดนักพัฒนาซอฟต์แวร์) ภายใต้ pub / static หากยังไม่มีอยู่
David Verholen

4

หมายความว่าแต่ละไฟล์ใน pub / static ถูกสร้างขึ้นเมื่อมีการร้องขอและคุณไม่จำเป็นต้องโทรsetup:static-content:deployหรือไม่ สิ่งนี้ขัดแย้งกับประสบการณ์ของฉัน หรือฉันสามารถลบไฟล์ใด ๆ และพวกเขาจะถูกสร้างใหม่?

ใช่. แต่จากประสบการณ์ของฉันสิ่งนี้ไม่ได้ใช้เวลาส่วนใหญ่ อาจเป็นข้อผิดพลาด ทางออกที่ดีกว่าคือการลบpub/staticเนื้อหาและปรับใช้เนื้อหาแบบสแตติกอีกครั้งเมื่อใดก็ตามที่คุณเปลี่ยนไฟล์สแตติก (js, css, html ฯลฯ ) แม้ว่าคุณจะเปิดใช้งานโหมดนักพัฒนาซอฟต์แวร์แล้วก็ตาม คำถามของฉันเกี่ยวกับเรื่องนี้


มันขึ้นอยู่กับวิธีที่คุณเห็น หากคุณต้องการเรียกใช้การตั้งค่า: เนื้อหาแบบคงที่: ปรับใช้ทุกครั้งที่คุณทำการเปลี่ยนแปลงมันจะใช้เวลาหลายปีกว่าที่โครงการจะเสร็จเพราะคุณกำลังสร้างไฟล์ทุกไฟล์สำหรับร้านค้าของคุณเมื่อคุณอัปเดตไฟล์เดียวเท่านั้น ดังนั้นทางออกของฉันคือเขียนทับไฟล์ภายใน pub / static และ clearing cache เพื่อดูการเปลี่ยนแปลงของฉัน เมื่อฉันพอใจกับผลลัพธ์ของฉันแล้วฉันจะไปที่ธีมหรือไฟล์โมดูลที่กำหนดเองของฉันเพื่อเขียนทับไฟล์หลักของฉันแล้วเรียกใช้การตั้งค่า: เนื้อหาคงที่: ปรับใช้เพื่ออัปเดตไฟล์สแตติกของฉัน
Wolfgang Leon

4

เพียงเพื่อชี้แจงระหว่างสามโหมดที่แตกต่างกัน (ที่มา: หลักสูตร Magento U Fundamentals) ตัวหนาจุดเฉพาะที่เกี่ยวข้องกับคำถามของคุณ

โหมดนักพัฒนา

  • ไม่ได้เปิดใช้งานการแปลงเป็นไฟล์สแตติก
  • ข้อยกเว้นที่ไม่ได้แสดงปรากฏในเบราว์เซอร์
  • มีข้อยกเว้นเกิดขึ้นในตัวจัดการข้อผิดพลาดไม่ใช่เข้าสู่ระบบ
  • ระบบเข้าสู่ระบบvar/reportมีรายละเอียดสูง

คุณควรใช้โหมดนักพัฒนาซอฟต์แวร์ในขณะที่คุณกำลังพัฒนาการปรับแต่งหรือส่วนขยาย ประโยชน์หลักของโหมดนี้คือข้อความแสดงข้อผิดพลาดปรากฏให้คุณเห็น ไม่ควรใช้ในการผลิตเนื่องจากมีผลกระทบต่อประสิทธิภาพ ในโหมดนักพัฒนาไฟล์มุมมองแบบคงที่จะถูกสร้างขึ้นทุกครั้งที่มีการร้องขอ มันถูกเขียนไปยังpub/staticไดเรกทอรี แต่ไม่ได้ใช้แคชนี้ สิ่งนี้มีผลกระทบอย่างมากต่อการทำงาน แต่การเปลี่ยนแปลงใด ๆ ที่ผู้พัฒนาทำเพื่อดูไฟล์จะสามารถมองเห็นได้ทันที

ข้อยกเว้นที่ไม่ได้ตรวจสอบจะแสดงในเบราว์เซอร์แทนที่จะบันทึก มีข้อผิดพลาดเกิดขึ้นเมื่อใดก็ตามที่ไม่สามารถเรียกใช้สมาชิกเหตุการณ์

การเข้าสู่ระบบvar/reportมีรายละเอียดสูงในโหมดนี้

โหมดการผลิต

  • ขั้นตอนการปรับใช้ในระบบการผลิต ประสิทธิภาพสูงสุด
  • ข้อยกเว้นจะไม่ปรากฏต่อผู้ใช้ - เขียนลงในบันทึกเท่านั้น
  • โหมดนี้ปิดใช้งานการสร้างไฟล์สแตติก
  • Magento docroot สามารถมีสิทธิ์แบบอ่านอย่างเดียว

คุณควรรัน Magento ในโหมดการผลิตเมื่อมีการปรับใช้กับเซิร์ฟเวอร์ที่ใช้งานจริง

โหมดการผลิตให้ประสิทธิภาพสูงสุดใน Magento 2

สิ่งสำคัญที่สุดของโหมดนี้คือข้อผิดพลาดจะถูกบันทึกไว้ในระบบไฟล์และไม่เคยแสดงต่อผู้ใช้ ในโหมดนี้ไฟล์มุมมองแบบสแตติกไม่ได้ถูกสร้างขึ้นทันทีเมื่อมีการร้องขอ แต่จะต้องปรับใช้กับpub/staticไดเรกทอรีโดยใช้เครื่องมือบรรทัดคำสั่ง เพจที่สร้างขึ้นจะมีลิงก์โดยตรงไปยังทรัพยากรหน้าเว็บที่ปรับใช้

การเปลี่ยนแปลงใด ๆ ในการดูไฟล์ต้องใช้เครื่องมือปรับใช้อีกครั้ง

เนื่องจากไฟล์มุมมองถูกปรับใช้โดยใช้เครื่องมือ CLI ผู้ใช้เว็บจึงจำเป็นต้องมีการเข้าถึงเพื่อเขียน pub/staticไดเรกทอรีMagento สามารถมีสิทธิ์แบบอ่านอย่างเดียวซึ่งเป็นการตั้งค่าที่ปลอดภัยยิ่งขึ้นบนเซิร์ฟเวอร์ที่เข้าถึงได้ทั่วไป

โหมดเริ่มต้น

  • ใช้เมื่อไม่ได้ระบุโหมดอื่น
  • ซ่อนข้อยกเว้นจากผู้ใช้และเขียนลงในล็อกไฟล์
  • เปิดใช้งานการสร้างไฟล์สแตติก
  • ไม่แนะนำ / ไม่เหมาะสำหรับการผลิต: การแคชส่งผลกระทบต่อประสิทธิภาพในทางลบ

ตามชื่อที่ระบุโหมดเริ่มต้นคือวิธีที่ซอฟต์แวร์ Magento ทำงานหากไม่มีการระบุโหมดอื่น

ในโหมดนี้ errros จะถูกบันทึกไว้ในไฟล์var/reportsและจะไม่ปรากฏต่อผู้ใช้ ไฟล์มุมมองคงที่จะปรากฏในทันทีแล้วแคช

ตรงกันข้ามกับโหมดนักพัฒนาซอฟต์แวร์การดูไฟล์จะไม่สามารถมองเห็นได้จนกว่าไฟล์มุมมองแบบคงที่ที่สร้างขึ้นจะถูกล้างออก

โหมดเริ่มต้นไม่เหมาะสำหรับสภาพแวดล้อมการผลิตหลักเนื่องจากผลกระทบต่อประสิทธิภาพที่ไม่พึงประสงค์ของไฟล์คงถูกรูปธรรมในการบินมากกว่าการสร้างและปรับใช้พวกเขาก่อน

กล่าวอีกนัยหนึ่งการสร้างไฟล์สแตติกในทันทีและการแคชมีผลกระทบต่อประสิทธิภาพมากกว่าการสร้างโดยใช้เครื่องมือบรรทัดคำสั่งการสร้างไฟล์สแตติก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.