Magento 2: Когда мне следует запускать какие команды?


20

Я работаю с Magento 2 уже 2 месяца. Я понял, что использую bin/magento setup:upgradeслишком много. Я думаю, что я не знаю, когда я должен выполнить эту команду.

Вот ситуации, в которых я запускаю вышеупомянутую команду.

  • Когда я создаю новый модуль,
  • Когда я добавляю что-то в каталог установки,
  • Когда я редактирую etc/module.xml,
  • Когда я редактирую etc/di.xml,
  • Когда я редактирую etc/webapi.xml,
  • Когда я редактирую etc/adminhtml/system.xml

Вопрос: В каких ситуациях абсолютно необходимо выполнить bin/magento setup:upgradeкоманду?

( Причина, по которой я спрашиваю, состоит в том, что выполнение этой команды занимает некоторое время. Я считаю, что это действительно может повысить производительность, если я перестану использовать ее без необходимости. )

Ответы:


43

Читать больше на: Mageprince Blog

Вам нужно только запустить setup:upgradeкоманду

1. Когда вы внесли изменения в сценарий установки (InstallData, InstallSchema,
UpgradeData, UpgradeSchema, ...)

2. Если вы устанавливаете Magento в первый раз.

3. Во время установки нового модуля

4. После обновления версии magento.

Что будет делать setup:upgradeкоманда

1) Проверьте версию модуля в setup_moduleтаблице

2) Если версия недоступна или новая версия добавлена ​​в module.xml, он запустит скрипт установки и добавит номер последней версии в таблицу.

Если вы внесли изменения в файлы HTML, CSS, JS, ..., вам нужно удалить определенные измененные файлы из pub/staticпапки или выполнить эту команду

php bin / magento setup: static-content: deploy

Краткая форма: php bin / magento s: s: d

Если вы внесли изменения, такие как добавление новой зависимости в __construct () или измененияdi.xml , вам нужно удалить измененные файлы из var/generationпапки или запустить эту команду

php bin / magento setup: di: compile

Сокращенная форма: php bin / magento s: d: c

Если вы внесли изменения в конфигурацию администратора, макет xml, пользовательский интерфейс, phtml, ... файлы, вам нужно только очистить или очистить кеш

php bin / magento cache: flush

Краткая форма: php bin / magento c: f


3

1. Когда я создаю новый модуль:

2. Когда я добавляю что-то в каталог установки

3. Когда я редактирую etc / module.xml

php bin/magento module:enable
php bin/magento setup:upgrade

4.При редактировании файла etc / module.xml,

5. Когда я редактирую etc / di.xml,

6. Когда я редактирую etc / webapi.xml,

7. Когда я редактирую etc / adminhtml / system.xml для xml изменений, очистка кэша более чем достаточно:

php bin/magento cache:flush

css и js изменения: - очистить кеш и php bin/magento setup:static-content:deploy


Насколько я понимаю, setup:upgradeможет быть выполнена альтернатива module:enable.
Джошуа Флуд

Доступны ли какие-либо сценарии, объединяющие эти команды в 1?
snh_nl

2

Если вы работаете в режиме разработчика, вам не нужно указывать compile при xmlвнесении изменений , вы можете сделать только a setup:upgrade.

А для других модификаций , как css, phtml, js, только flush cache, вам не нужно развернуть статическое содержимое .


Нет, нам не нужно запускать setup:upgradeдля модификации XML. За более подробной информацией обращайтесь к верхнему ответу :)
Prince Patel

1

Просто нужно запустить bin / magento setup: обновлять всякий раз, когда вы вносите изменения в базу данных.

Например, если вы создаете атрибуты (программно), новые модули, обновления версий и т. Д.

Поэтому следует помнить основное правило: если вы знаете, что ваш код будет вносить изменения в базу данных, выполните команду setup: upgrade.


Делает ли php bin/magento setup:upgradeустановка CRON JOB устаревшей? Я в замешательстве, потому что он записан здесь как cronjob для запуска каждую минуту devdocs.magento.com/guides/v2.3/comp-mgr/module-man/…
snh_nl

1

Я создал файл bash, который может автоматизировать процесс:

в вашей папке magento введите 'vi magento_bash', скопируйте и вставьте приведенный ниже код. сохраните файл с помощью экранирования и: wq и введите надеюсь, что это поможет. Примечание: приведенный ниже файл принимает только одну команду за раз.

#!/bin/sh

mainmenu()
{

echo 'Press 1 if you have created a new module'

echo 'Press 2 if you have changed HTML, CSS, JS..'

echo 'Press 3 if you have made changes like add new dependency in __construct() or changes in di.xml'

echo 'Press 4 if you have made changes like admin configuration, layout xml, ui component, phtml'

read -n 1 -p "Input Selection:" mainmenuinput

if [ "$mainmenuinput" = "1" ];
then
    cd src
    php bin/magento setup:upgrade
elif [ "$mainmenuinput" = "2" ];
then
    cd src
    php bin/magento s:s:d en_AU en_US
elif [ "$mainmenuinput" = "3" ];
then
    cd src
    php bin/magento setup:di:compile
elif [ "$mainmenuinput" = "4" ];
then
    cd src
    php bin/magento cache:flush
else
    echo 'You have selected an invalid selection'
fi
}

mainmenu

en_AU en_US за командой ssd?
snh_nl

0

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.