magento 2 - Nesse caso, precisamos executar este comando magento setup: di: compile?

12

Em que caso precisamos executar este comando magento setup:di:compile?

MrTo-Kane
fonte
Depois de instalar novos módulos e quero esclarecer algumas directries
Jaleel
e mais alguma coisa?
MrTo-Kane
Além disso, quando você alterna para o modo de produção, porque nesse modo, nenhum conteúdo estático é gerado; é tudo servido a partir depub/static
Steve Johnson

Respostas:

8
  • 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:compilesempre 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/dipara desativá-la.

Fabian Schmengler
fonte
1
setup: di: compile-multi-tenant foi removido
Antonino Bonumore
Podemos obter alguma confirmação sobre se a exclusão do truque da pasta var / di funciona? Ele não parece para mim
Wildcard27
@ Wildcard27 e se você também excluir os diretórios var/generation?
Fabian Schmengler
@FabianSchmengler Acabou de criar um Actionpara testar. - Carregou a página, erro. - Excluídas die generationpastas, recarregadas, funcionam. - Adicione nova dependência, recarregue a página, erro. No entanto, nenhuma dipasta é gerada. - Excluir generationnovamente, 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.
Wildcard27
1

Conforme meu comentário em outra resposta:

Você pode evitar executar o setup:di:compilecomando depois de cada vez que adicionar uma dependência, excluindo as pastas var/die antes de recarregar a página .var/generation

Dos meus próprios testes, o Magento recriará a var/generationpasta, mas não a var/dipasta até que setup:di:compileseja executada novamente. Isso significa que você só deve ter a var/generationpasta 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:deployou o `setup: di: compile.

Para referência, estou executando a versão 2.1.5 .

Curinga27
fonte
0

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.

Suresh Chikani
fonte
1
"Isso é uma questão de desempenho e segurança, e discuti-lo completamente está além do escopo deste artigo". isso denunciou. cópia flagrante de Alan Storm: alanstorm.com/magento_2_di_compile_pre-scan_with_commerce_bug #
Fabian Schmengler