Какие команды компиляции нужны в режиме разработчика и когда?

24

Может кто-нибудь дать мне инструкции, когда выполнять какие команды компиляции в режиме разработчика Magento 2? Я не уверен, правильно ли я все понял.

В devdocs режим разработчика описывается следующим образом:

  • Файлы статического представления не кэшируются; они записываются в каталог Magento pub / static каждый раз, когда их вызывают

Означает ли это, что каждый отдельный файл в pub / static генерируется, когда он запрашивается, и вам никогда не нужно звонить setup:static-content:deploy? Это противоречит моему опыту. Или я могу удалить любые файлы, и они будут восстановлены? Кроме того, изображения, файлы CSS и JS, похоже, обрабатываются по-разному.

Страница документации режима разработчика ничего не говорит о компиляции кода, но я думаю, что также была разница, поэтому не нужно было запускать setup:di:compileпосле всех изменений в di.xmlфайлах. Это правильно, и если да, то как работает генерация кода в режиме разработчика?

Другими словами: за исключением кеша, какие команды мне нужно выполнять после каких изменений?

Фабиан Шменглер
источник

Ответы:

27

Обратите внимание: я обнаружил, что в режиме разработчика удаление pub/staticбудет сломать механизм, потому что вы избавляетесь от .htaccessфайла, который делает магию в этой папке.

Если вы сохраняете pub/static/.htaccessфайл в режиме разработчика, вам не нужно выполнять какую-либо команду компиляции: Magento создаст символические ссылки на файлы, как только они будут запрошены. Это означает, что изменения в статических ресурсах будут видны сразу, если у вас также отключен кеш.

Вы можете удалить pub/static/frontendили pub/static/adminhtmlвместо.

В режиме по умолчанию активы материализуются в pub/staticподпапке, что означает, что они создаются (копируются, а не являются символическими ссылками) по первому запросу. Если вы измените их, вы должны очистить кеш, чтобы обновить их.

В производственном режиме активы не материализуются (вызывая ошибку 404 HTTP по запросу), пока вы не выполните bin/magento setup:static-content:deployкоманду.

Надеюсь, это поможет.

Алессандро Рончи
источник
Как насчет компиляции DI?
Эрфан
@ Эрфан, что ты имеешь в виду?
Алессандро Ронки
2
Вопрос также касается вопроса о влиянии режима развертывания на компиляцию DI. Я только что провел быстрое тестирование, и если вы находитесь в режиме разработчика, вам не нужно компилировать DI, чтобы ваши изменения di.xmlотображались (кажется, генерация кода выполняется на лету при каждом попадании на страницу?) В любом случае, думал, что это будет хорошим дополнением к твоему и так хорошему ответу!
Эрфан
Вы правы @Erfan
Алессандро Рончи
1+ Спасибо, брат. Работал как шарм. У меня был очень плохой опыт повторного развертывания команд, чтобы мои изменения были менее значимыми даже в режиме разработчика. Я скопировал .htaccess из другого проекта и вставил в указанное место. Khalaaas!
Умар Юсуф
4

Исходя из моего опыта, вам не нужно запускать какие-либо команды для генерации кода / статических файлов в режиме разработчика.

Если статические файлы не были сгенерированы, возможно, существует другая проблема.

Я вижу две причины этого на первый взгляд:

  • Режим разработчика не работает правильно. возможно, активация не удалась по какой-то причине
  • перезапись для статических файлов в pub / static.php не работает
Дэвид Верхолен
источник
1
Мой меньший файл в pub / static не перегенерируется. Вы понимаете эту проблему? Как сделать это автоматически регенерировать
mrtuvn
Важно, чтобы режим разработчика был активным, а также работал с перезаписью, поскольку любой запрос к статическим файлам сначала переписывается в pub / static.php, который затем генерирует файл (в режиме разработчика) в pub / static, если его еще нет.
Дэвид Верхолен
4

Означает ли это, что каждый отдельный файл в pub / static генерируется, когда он запрашивается, и вам никогда не нужно звонить setup:static-content:deploy? Это противоречит моему опыту. Или я могу удалить любые файлы, и они будут восстановлены?

Да. Но по моему опыту это не работает большую часть времени. Может быть ошибка. Лучшее решение - удалить pub/staticконтент и снова развернуть статический контент всякий раз, когда вы изменили статический файл (js, css, html и т. Д.), Даже если вы уже активировали режим разработчика. Мой собственный вопрос по этому поводу.

Джанака Домбавела
источник
Это зависит от того, как вы это видите. Если вы хотите запустить setup: static-content: deploy каждый раз, когда вы вносите изменения, вам потребуются годы, чтобы завершить проект, потому что в основном вы создаете каждый отдельный файл для своего магазина, когда вы обновляете только один файл. Поэтому я решил переписать файлы в pub / static и очистить кеш, чтобы увидеть мои изменения. Когда я доволен результатами, я перейду к своей теме или к файлам пользовательских модулей, чтобы перезаписать мои основные файлы, а затем запущу setup: static-content: deploy, чтобы обновить мои статические файлы.
Вольфганг Леон
4

Просто чтобы уточнить между тремя различными режимами (источник: курс Magento U Основы). Жирным шрифтом указаны конкретные моменты, связанные с вашим вопросом.

режим разработчика

  • Статическая материализация файла не включена.
  • Необработанные исключения отображаются в браузере
  • Исключения, выданные в обработчике ошибок, не зарегистрированы
  • Система входа в систему var/report, очень подробно.

Вы должны использовать режим разработчика при разработке настроек или расширений. Основным преимуществом этого режима является то, что сообщения об ошибках видны вам. Он не должен использоваться в производстве из-за его влияния на производительность. В режиме разработчика файлы статического представления создаются каждый раз, когда они запрашиваются. Они записываются в pub/staticкаталог, но этот кеш не используется. Это имеет большое влияние на производительность, но любые изменения, которые вносит разработчик для просмотра файлов, сразу видны.

Необработанные исключения отображаются в браузере, а не в журнале. Исключение выдается всякий раз, когда подписчик события не может быть вызван.

Вход в систему var/reportочень подробно в этом режиме.

Режим производства

  • Этап развертывания в производственной системе; высочайшая производительность
  • Исключения не отображаются пользователю - записываются только в журналы.
  • Этот режим отключает статическую материализацию файлов.
  • Докерот Magento может иметь права только для чтения.

Вы должны запустить Magento в производственном режиме после его развертывания на производственном сервере.

Производственный режим обеспечивает высочайшую производительность в Magento 2.

Наиболее важным аспектом этого режима является то, что ошибки регистрируются в файловой системе и никогда не отображаются пользователю. В этом режиме файлы статического представления не создаются на лету, когда их запрашивают; вместо этого они должны быть развернуты в pub/staticкаталоге с помощью инструмента командной строки. Созданные страницы будут содержать прямые ссылки на развернутые ресурсы страницы.

Любые изменения для просмотра файлов требуют повторного запуска инструмента развертывания.

Поскольку файлы представлений развертываются с помощью инструмента CLI, веб-пользователю необходим доступ для записи. pub/staticКаталог Magento может иметь разрешения только для чтения, что является более безопасной настройкой на общедоступном сервере.

Режим по умолчанию

  • Используется, когда не указан другой режим
  • Скрывает исключения от пользователя и записывает их в файлы журнала
  • Статическая материализация файла включена.
  • Не рекомендуется / не оптимизирован для производства: кэширование отрицательно влияет на производительность.

Как следует из названия, режим по умолчанию - это то, как работает программное обеспечение Magento, если не указан другой режим.

В этом режиме ошибки регистрируются в файлах var/reportsи никогда не показываются пользователю. Файлы статического представления создаются на лету, а затем кэшируются.

В отличие от режима разработчика, изменения файла представления не видны, пока сгенерированные файлы статического представления не будут очищены.

Режим по умолчанию не оптимизирован для производственной среды, в основном из-за неблагоприятного воздействия на производительность статических файлов, которые создаются на лету, а не генерируются и разворачиваются заранее .

Другими словами, создание статических файлов на лету и их кэширование оказывает большее влияние на производительность, чем их создание с использованием инструмента командной строки для создания статических файлов.

Рафаэль в цифровом пианизме
источник