magento 2 - Trong trường hợp nào chúng ta cần chạy lệnh này thiết lập magento: di: compile?


12

Trong trường hợp nào chúng ta cần chạy lệnh này magento setup:di:compile?


Khi bạn đã cài đặt các mô-đun mới và muốn xóa một số lệnh
Jaleel

và bất cứ điều gì khác?
MrTo-Kane

Ngoài ra khi bạn chuyển sang chế độ sản xuất vì ở chế độ đó, không có nội dung tĩnh nào được tạo; tất cả đều được phục vụ từpub/static
Steve Johnson

Câu trả lời:


8
  • Trong quá trình triển khai (nghĩa là khi thay đổi được thực hiện cho một hệ thống ở chế độ sản xuất)

    Lưu ý rằng trong chế độ sản xuất (phiên bản 2.0.5 trở về trước), bạn phải sử dụng phần tổng hợp "nhiều người thuê". Đã sửa trong 2.0.6 trở lên.

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

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

  • Bạn cũng có thể sử dụng trình biên dịch trong chế độ phát triển, điều này sẽ tăng tốc trang web, nhưng mặt khác, nó làm chậm sự phát triển, bởi vì bạn sẽ cần chạy bin/magento setup:di:compilemỗi khi bạn thêm các lớp mới với các phụ thuộc (tham số hàm tạo) hoặc thay đổi phụ thuộc của các lớp hiện có .

    Đây là tùy chọn và có lẽ nó không phải là một ý tưởng tốt. Nếu bạn đã chạy phần biên dịch trong môi trường phát triển của mình, hãy xóa các tệp trong var/diđể vô hiệu hóa nó.


1
thiết lập: di: compile-multi-tenant đã bị xóa
Antonino Bonumore

Chúng tôi có thể vui lòng nhận được một số xác nhận về việc xóa thủ thuật thư mục var / di có hoạt động không? Nó dường như không phù hợp với tôi
Wildcard27

@ Wildcard27 nếu bạn cũng xóa các thư mục trong var/generation?
Fabian Schmengler

@FabianSchmengler Vừa tạo một Actionbài kiểm tra. - Đang tải trang, lỗi. - Đã xóa digenerationthư mục, tải lại, hoạt động. - Thêm phụ thuộc mới, tải lại trang, lỗi. Tuy nhiên không có dithư mục được tạo ra. - Xóa generationlại, tải lại, hoạt động. Kết luận: Xóa thư mục tạo sau khi thêm phụ thuộc và bạn sẽ không phải chạy setup:di:compile. Nếu ai đó có thể xác nhận điều này, điều đó thật tuyệt vời.
Wildcard27

1

Theo nhận xét của tôi về một câu trả lời khác:

Bạn có thể tránh chạy setup:di:compilelệnh sau mỗi lần bạn thêm phụ thuộc bằng cách xóa var/divar/generationthư mục trước khi tải lại trang .

Từ các thử nghiệm của riêng tôi, Magento sẽ tạo lại var/generationthư mục, nhưng không phải var/dithư mục cho đến khi setup:di:compileđược chạy lại. Điều này có nghĩa là bạn chỉ nên có var/generationthư mục để xóa.

Đủ hài hước, điều này cũng làm việc với pub/static/*setup:static-content:deploy. Điều này là do Magento dường như tạo liên kết tượng trưng đến các tệp cần thiết nếu nội dung tĩnh được xây dựng bằng cách tải lại trang, thay vì CLI.

Mọi người trong văn phòng của chúng tôi gặp sự cố khi chạy các lệnh trên trong khi sử dụng Docker cho Mac. Việc xử lý tập tin quá chậm. Bằng cách sử dụng các bước trên, phát triển sẽ nhanh hơn nhiều.

Có lẽ tốt nhất để lưu ý rằng điều này sẽ không hoạt động khi ở chế độ sản xuất hoặc mặc định. Điều này chỉ dành cho sự phát triển. Như Fabian Schmengler đã đề cập, tải lại trang ban đầu sẽ chậm hơn bình thường, nhưng không nên chậm như khi chạy setup:static-content:deployhoặc `setup: di: compile.

Để tham khảo, tôi đang chạy phiên bản 2.1.5 .


0

Lấy từ blog của Alan Storm .

Biên dịch tiêm phụ thuộc

Để bắt đầu, chúng ta nên giải thích vấn đề mà các lệnh này đang cố gắng giải quyết. Khi bạn vận chuyển hệ thống Magento 2 vào sản xuất, bạn cần chạy lệnh sau

php bin/magento setup:di:compile

Lệnh này quét qua mã trong hệ thống của bạn và tạo trước một số thứ (chủ yếu liên quan đến hệ thống quản lý đối tượng và nội dung phụ thuộc) mà Magento tải động khi bạn đang chạy trong chế độ nhà phát triển. Đây là cả một điều hiệu suất và bảo mật, và thảo luận đầy đủ về nó nằm ngoài phạm vi của bài viết này.


1
"Đây là cả một điều hiệu suất và bảo mật, và thảo luận đầy đủ về nó nằm ngoài phạm vi của bài viết này." Điều này đã cho nó đi. bản sao trắng trợn từ Alan Storm: alanstorm.com/magento_2_di_compile_pre-scan_with_c Commerce_orms
Fabian Schmengler
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.