У якому випадку нам потрібно запустити цю команду magento setup:di:compile
?
pub/static
У якому випадку нам потрібно запустити цю команду magento setup:di:compile
?
pub/static
Відповіді:
Під час розгортання (тобто коли були внесені зміни в режим виробництва)
Зауважте, що у виробничому режимі (версії 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
щоб відключити її.
var/generation
?
Action
тест. - Завантажено сторінку, помилка. - Видалені di
та generation
папки, перезавантажені, працюють. - Додати нову залежність, сторінку перезавантаження, помилку. Однак di
папка не створюється. - generation
Ще раз видалити , перезавантажити, працює. Висновок: Видаліть генераційну папку після додавання залежностей і вам не доведеться запускати setup:di:compile
. Якби хтось інший міг підтвердити це, це було б приголомшливо.
Відповідно до мого коментаря до іншої відповіді:
Ви можете уникнути запуску setup:di:compile
команди після кожного додавання команди, просто видаливши папки var/di
та перезавантаживши сторінку .var/generation
З моїх власних тестів, Magento відтворить var/generation
папку, але не var/di
папку, поки setup:di:compile
не запуститься знову. Це означає, що ви повинні мати лише var/generation
папку для видалення.
Як не дивно, це також працює з pub/static/*
і setup:static-content:deploy
. Це тому, що Magento, здається, створює посилання на потрібні файли, якщо статичний вміст будується за допомогою перезавантаження сторінки, а не CLI.
Люди в нашому офісі мали проблеми із виконанням вищезазначених команд під час використання Docker для Mac. Обробка файлів була просто надто повільною. Використовуючи наведені вище кроки, розвиток повинен бути набагато швидшим.
Напевно, найкраще зауважити, що це не працюватиме у режимі виробництва чи за замовчуванням. Це лише для розвитку. Як зазначав Фабіан Шменглер, початкове завантаження сторінки буде протікати повільніше, ніж зазвичай, але не повинно бути таким повільним, як запуск setup:static-content:deploy
або `setup: di: compile.
Для довідки, у мене працює версія 2.1.5 .
Взято з блогу Алана Шторма .
Компіляція ін'єкційних залежностей
Для початку слід пояснити проблему, яку ці команди намагаються вирішити. Під час відвантаження системи Magento 2 до виробництва вам потрібно виконати наступну команду
php bin/magento setup:di:compile
Ці команди сканують код у вашій системі та попередньо генерують низку речей (в основному пов'язаних із системою керування об'єктами та введеннями залежностей), які Magento динамічно завантажує під час роботи в режимі розробника. Це і продуктивність, і безпека, і обговорення цього в повному обсязі виходить за межі цієї статті.