Em que caso precisamos executar este comando magento setup:di:compile
?
magento2
extensions
cli
MrTo-Kane
fonte
fonte
pub/static
Respostas:
Durante a implantação (ou seja, quando foram feitas alterações em um sistema no modo de produção)
Observe que no modo de produção (versões 2.0.5 e anteriores) você deve usar a compilação "multilocatário". Corrigido no 2.0.6 e posterior.
Veja: http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-compiler.html
Você também pode usar a compilação no modo de desenvolvimento, o que deve acelerar o site, mas, por outro lado, diminui o desenvolvimento, porque você precisará executar
bin/magento setup:di:compile
sempre que adicionar novas classes com dependências (parâmetros do construtor) ou alterar as dependências das classes existentes .Isso é opcional e provavelmente não é uma boa ideia. Se você já executou a compilação em seu ambiente de desenvolvimento, exclua os arquivos
var/di
para desativá-la.fonte
var/generation
?Action
para testar. - Carregou a página, erro. - Excluídasdi
egeneration
pastas, recarregadas, funcionam. - Adicione nova dependência, recarregue a página, erro. No entanto, nenhumadi
pasta é gerada. - Excluirgeneration
novamente, recarregar, funciona. Conclusão: exclua a pasta de geração após adicionar dependências e você não precisará executarsetup:di:compile
. Se alguém pudesse confirmar isso, isso seria incrível.Conforme meu comentário em outra resposta:
Você pode evitar executar o
setup:di:compile
comando depois de cada vez que adicionar uma dependência, excluindo as pastasvar/di
e antes de recarregar a página .var/generation
Dos meus próprios testes, o Magento recriará a
var/generation
pasta, mas não avar/di
pasta até quesetup:di:compile
seja executada novamente. Isso significa que você só deve ter avar/generation
pasta para excluir.Curiosamente, isso também funciona com
pub/static/*
esetup:static-content:deploy
. Isso ocorre porque o Magento parece criar links simbólicos para os arquivos necessários se o conteúdo estático for construído por recarregamento de página, em vez de CLI.As pessoas em nosso escritório estavam tendo problemas para executar os comandos acima enquanto usavam o Docker para Mac. O processamento do arquivo foi muito lento. Usando as etapas acima, o desenvolvimento deve ser muito mais rápido.
Provavelmente, é melhor observar que isso não funcionará no modo de produção ou padrão. Isso é apenas para desenvolvimento. Como mencionado por Fabian Schmengler, o recarregamento inicial da página será mais lento que o normal, mas não deve ser tão lento quanto a execução
setup:static-content:deploy
ou o `setup: di: compile.Para referência, estou executando a versão 2.1.5 .
fonte
Retirado do blog de Alan Storm .
Compilação de injeção de dependência
Para começar, devemos explicar o problema que esses comandos estão tentando resolver. Ao enviar um sistema Magento 2 para produção, você precisa executar o seguinte comando
Esse comando varre o código do seu sistema e gera previamente várias coisas (principalmente relacionadas ao sistema gerenciador de objetos e injeção de dependência) que o Magento carrega dinamicamente quando você está executando no modo de desenvolvedor. Isso é uma questão de desempenho e segurança, e discuti-lo completamente está além do escopo deste artigo.
fonte