Trong trường hợp nào chúng ta cần chạy lệnh này magento setup:di:compile
?
pub/static
Trong trường hợp nào chúng ta cần chạy lệnh này magento setup:di:compile
?
pub/static
Câu trả lời:
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:compile
mỗ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ó.
var/generation
?
Action
bài kiểm tra. - Đang tải trang, lỗi. - Đã xóa di
và generation
thư 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ó di
thư mục được tạo ra. - Xóa generation
lạ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.
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:compile
lệnh sau mỗi lần bạn thêm phụ thuộc bằng cách xóa var/di
và var/generation
thư 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/generation
thư mục, nhưng không phải var/di
thư 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/generation
thư mục để xóa.
Đủ hài hước, điều này cũng làm việc với pub/static/*
và 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:deploy
hoặc `setup: di: compile.
Để tham khảo, tôi đang chạy phiên bản 2.1.5 .
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.