É possível pré-gerar código para um módulo específico? IE - eu posso gerar todo o código no sistema com
php bin/magento setup:di:compile
No entanto, isso pode levar muito tempo. Eu gostaria de gerar previamente apenas os arquivos para um módulo específico.
php bin/magento setup:di:compile Pulsestorm_Commercebug
O problema específico que estou tentando resolver está solucionando esse problema, com alguns plug-ins não reconhecidos no modo desenvolvedor / padrão.
Respostas:
Resposta curta: Não. Isso não é possível com as ferramentas enviadas com o Magento agora.
Explicação: Temos que distinguir a geração e compilação de código . O compilador faz as duas coisas. Para ambas as operações, precisamos ler a configuração de todos os outros módulos magento, caso contrário, sua saída estará incorreta ou não estará completa.
A compilação para um módulo não faz sentido, pois o magento não funcionará com a configuração compilada para apenas um módulo.
A geração para um módulo pode fazer sentido, mas teremos que ler assinaturas de configuração e construtor de todos os outros módulos instalados de qualquer maneira. Sem ele, nem todo o código pode ser gerado. Portanto, essa operação não seria muito mais rápida que a compilação completa. Podemos pensar nisso, mas acho que o bug que você referenciou será corrigido antes da implementação do comando.
fonte
O
bin/magento
executável do Magento é apenas um componente do Symfony Console. Isso significa que você pode encontrar o arquivo individual responsável por um único comando. A nomeação é sempre a mesma; portanto, para setup: di: compile, você pode encontrar o DiCompileCommand.php (setup/src/Magento/Setup/Console/Command/DiCompileCommand.php
).Ele sempre executa o
exeucte()
método, e é aí que precisamos procurar. Nesta função, você verá um$operations
var definido, preenchido pelogetOperationsConfiguration()
método Esse método basicamente diz ao DiCompileCommand o que compilar.A primeira coisa que tentei é retornar apenas a parte do gerador de código do aplicativo;
Isso correu muito bem, o tempo de compilação foi reduzido drasticamente;
Ao contrário de;
Obviamente, isso era de se esperar, já que cortamos várias coisas. Mas você não especificou quais arquivos você deseja gerar. Nem todos os arquivos podem ser gerados por módulo, pois, por exemplo, as classes de interceptação podem depender de vários módulos e, portanto, forneceriam uma saída limitada de funcionalidade se você o executasse apenas para um módulo.
Você pode encontrar os geradores responsáveis aqui;
Cada classe possui um foreach, o que permitirá que você adicione um if / else com uma continuação para pular certos módulos / caminhos. Talvez seja útil verificar a documentação dos Argumentos de entrada de componentes do Symfony Console sobre como alimentar argumentos no comando.
fonte
você pode reconhecer por
pacote> módulo> registration.php
e do que correr
registration.php reconhecerá o módulo e completará seu módulo personalizado.
Eu espero que isso te ajude.
fonte
Quando você altera seu construtor para a classe que foi gerada na solicitação anterior, ele será interrompido. Se você estiver em tais necessidades simplesmente apagar
var/cache
,var/generation
evar/di
(se existir) e atualizar a página. Verifique se o modo é o desenvolvedor em que você está trabalhando.(Não estou dizendo desta maneira que o magento não compilará ou gerará uma base de código, sim, sim. Dessa maneira, ajuda a executar "setup: di: compile" toda vez que você fizer alterações em suas rotas ou classes)
fonte