magento 2 - ในกรณีใดเราจำเป็นต้องเรียกใช้การตั้งค่าคำสั่งนี้วีโอไอพี: di: compile?


12

ในสิ่งที่กรณีที่เราจำเป็นต้องเรียกใช้คำสั่งนี้magento setup:di:compile?


เมื่อคุณติดตั้งโมดูลใหม่และต้องการล้างเส้นทางบางอย่าง
Jaleel

และสิ่งอื่นใด
MrTo-Kane

นอกจากนี้เมื่อคุณเปลี่ยนไปใช้โหมดการผลิตเพราะในโหมดนั้นจะไม่มีการสร้างเนื้อหาแบบคงที่ บริการทั้งหมดจากpub/static
Steve Johnson

คำตอบ:


8
  • ระหว่างการปรับใช้ (เช่นเมื่อมีการเปลี่ยนแปลงระบบในโหมดการผลิต)

    โปรดทราบว่าในโหมดการผลิต (เวอร์ชั่น 2.0.5 และก่อนหน้า) คุณต้องใช้การรวบรวม "ผู้เช่าหลายคน" แก้ไขใน 2.0.6 และใหม่กว่า

    bin/magento setup:di:compile-multi-tenant

    ดู: http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-compiler.html

  • นอกจากนี้คุณยังสามารถใช้สะสมในโหมดการพัฒนาซึ่งจะเพิ่มความเร็วในเว็บไซต์ แต่ในทางกลับกันมันช้าลงการพัฒนาเพราะคุณจะต้องเรียกใช้bin/magento setup:di:compileทุกครั้งที่คุณเพิ่มชั้นเรียนใหม่ที่มีการอ้างอิง (พารามิเตอร์คอนสตรัค) หรือการเปลี่ยนแปลงการอ้างอิงของชั้นเรียนที่มีอยู่

    นี่เป็นทางเลือกและอาจไม่ใช่ความคิดที่ดี หากคุณทำการรวบรวมในสภาพแวดล้อมการพัฒนาของคุณแล้วให้ลบไฟล์var/diเพื่อปิดการใช้งาน


1
การติดตั้ง: di: ผู้รวบรวมหลายคนถูกลบแล้ว
Antonino Bonumore

เราสามารถขอการยืนยันว่าการลบโฟลเดอร์โฟลเดอร์ var / di นั้นทำงานได้หรือไม่? มันดูเหมือนจะไม่สำหรับฉัน
Wildcard27

@ Wildcard27 สิ่งที่ถ้าคุณยังลบไดเรกทอรีในvar/generation?
Fabian Schmengler

@FabianSchmengler เพิ่งสร้างการActionทดสอบ - โหลดหน้าผิดพลาด - ลบdiและgenerationโฟลเดอร์โหลดใหม่ทำงาน - เพิ่มการขึ้นต่อใหม่, หน้าโหลดซ้ำ, ข้อผิดพลาด อย่างไรก็ตามไม่มีการdiสร้างโฟลเดอร์ - ลบgenerationอีกครั้งโหลดทำงาน สรุป: setup:di:compileลบโฟลเดอร์รุ่นหลังเพิ่มการอ้างอิงและคุณจะไม่ต้องทำงาน หากคนอื่นสามารถยืนยันสิ่งนี้ได้นั่นก็ยอดเยี่ยมมาก
Wildcard27

1

ตามความคิดเห็นของฉันในคำตอบอื่น:

คุณสามารถหลีกเลี่ยงการรันsetup:di:compileคำสั่งหลังจากทุกครั้งที่คุณเพิ่มการพึ่งพาโดยเพียงแค่การลบvar/diและvar/generationโฟลเดอร์ก่อนที่จะโหลดหน้าใหม่

จากการทดสอบของฉันเองวีโอไอพีจะสร้างvar/generationโฟลเดอร์ขึ้นใหม่แต่จะไม่สร้างvar/diโฟลเดอร์จนกว่าsetup:di:compileจะรันอีกครั้ง หมายความว่าคุณควรมีvar/generationโฟลเดอร์ที่จะลบเท่านั้น

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

ผู้คนในสำนักงานของเรามีปัญหาในการเรียกใช้คำสั่งข้างต้นในขณะที่ใช้ Docker for Mac การประมวลผลไฟล์ช้าเกินไป โดยใช้ขั้นตอนข้างต้นการพัฒนาควรเร็วขึ้นมาก

มันอาจจะดีที่สุดที่จะทราบว่านี้จะไม่ทำงานเมื่ออยู่ในโหมดการผลิตหรือเริ่มต้น นี่เป็นเพียงการพัฒนา ดังกล่าวโดย Fabian Schmengler การโหลดหน้าเริ่มต้นใหม่จะช้ากว่าปกติ แต่ไม่ควรช้าเท่ากับการรันsetup:static-content:deployหรือ `setup: di: compile

สำหรับการอ้างอิงผมใช้เวอร์ชัน2.1.5


0

ที่นำมาจากบล็อกอลันพายุ

การรวบรวมการพึ่งพา

ในการเริ่มต้นเราควรอธิบายถึงปัญหาที่คำสั่งเหล่านี้พยายามแก้ไข เมื่อคุณจัดส่งระบบ Magento 2 เพื่อการผลิตคุณจะต้องเรียกใช้คำสั่งต่อไปนี้

php bin/magento setup:di:compile

คำสั่งนี้สแกนรหัสในระบบของคุณและสร้างจำนวนล่วงหน้า (ส่วนใหญ่เกี่ยวข้องกับระบบจัดการวัตถุและการฉีดพึ่งพา) ที่ Magento จะโหลดแบบไดนามิกเมื่อคุณทำงานในโหมดนักพัฒนาซอฟต์แวร์ นี่เป็นทั้งประสิทธิภาพและความปลอดภัยและการพูดคุยอย่างเต็มที่นั้นเกินขอบเขตของบทความนี้


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