В каком случае нам нужно запустить эту команду magento setup:di:compile
?
magento2
extensions
cli
MrTo-Kane
источник
источник
pub/static
Ответы:
Во время развертывания (т.е. когда были внесены изменения в систему в рабочем режиме)
Обратите внимание, что в производственном режиме (версии 2.0.5 и более ранние) вы должны использовать компиляцию «multi-tenant». Исправлено в 2.0.6 и позже.
См. 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
команды после того, как каждый раз , когда вы добавляете depency, просто вычеркивания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 в производство, вам нужно выполнить следующую команду
Эта команда просматривает код в вашей системе и предварительно генерирует ряд вещей (в основном связанных с системой менеджера объектов и внедрением зависимостей), которые Magento динамически загружает, когда вы работаете в режиме разработчика. Это вопрос как производительности, так и безопасности, и его полное обсуждение выходит за рамки данной статьи.
источник