Em que caso precisamos executar este comando magento setup:di:compile
?
pub/static
Em que caso precisamos executar este comando magento setup:di:compile
?
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.
bin/magento setup:di:compile-multi-tenant
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.
var/generation
?
Action
para testar. - Carregou a página, erro. - Excluídas di
e generation
pastas, recarregadas, funcionam. - Adicione nova dependência, recarregue a página, erro. No entanto, nenhuma di
pasta é gerada. - Excluir generation
novamente, recarregar, funciona. Conclusão: exclua a pasta de geração após adicionar dependências e você não precisará executar setup: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 pastas var/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 a var/di
pasta até que setup:di:compile
seja executada novamente. Isso significa que você só deve ter a var/generation
pasta para excluir.
Curiosamente, isso também funciona com pub/static/*
e setup: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 .
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
php bin/magento setup:di:compile
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.