¿En qué caso necesitamos ejecutar este comando magento setup:di:compile
?
magento2
extensions
cli
MrTo-Kane
fuente
fuente
pub/static
Respuestas:
Durante la implementación (es decir, cuando se realizaron cambios en un sistema en modo de producción)
Tenga en cuenta que en el modo de producción (versiones 2.0.5 y anteriores) debe usar la compilación "multiinquilino". Solucionado en 2.0.6 y posterior.
Ver: http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-compiler.html
También puede usar la compilación en modo de desarrollo, lo que debería acelerar el sitio, pero por otro lado, ralentiza el desarrollo, ya que deberá ejecutar
bin/magento setup:di:compile
cada vez que agregue nuevas clases con dependencias (parámetros del constructor) o cambie las dependencias de las clases existentes .Esto es opcional, y probablemente no sea una buena idea. Si ya ejecutó la compilación en su entorno de desarrollo, elimine los archivos
var/di
para deshabilitarla.fuente
var/generation
?Action
para probar. - Cargué la página, error. - Borradodi
ygeneration
carpetas, recargado, funciona. - Agregar nueva dependencia, recargar página, error. Sin embargo, nodi
se genera ninguna carpeta. - Eliminar degeneration
nuevo, volver a cargar, funciona. Conclusión: elimine la carpeta de generación después de agregar dependencias y no tendrá que ejecutarsetup:di:compile
. Si alguien más pudiera confirmar esto, sería increíble.Según mi comentario sobre otra respuesta:
Puede evitar ejecutar el
setup:di:compile
comando cada vez que agregue una dependencia simplemente eliminando las carpetasvar/di
y antes de volver a cargar la página .var/generation
A partir de mis propias pruebas, Magento recreará la
var/generation
carpeta, pero no lavar/di
carpeta hasta quesetup:di:compile
se vuelva a ejecutar. Esto significa que solo debe tener lavar/generation
carpeta para eliminar.Curiosamente, esto también funciona con
pub/static/*
ysetup:static-content:deploy
. Esto se debe a que Magento parece crear enlaces simbólicos a los archivos necesarios si el contenido estático se crea mediante la recarga de la página, en lugar de la CLI.Las personas en nuestra oficina tenían problemas para ejecutar los comandos anteriores mientras usaban Docker para Mac. El procesamiento del archivo fue demasiado lento. Al usar los pasos anteriores, el desarrollo debería ser mucho más rápido.
Probablemente sea mejor tener en cuenta que esto no funcionará cuando esté en modo de producción o predeterminado. Esto es solo para el desarrollo. Como lo menciona Fabian Schmengler, la recarga inicial de la página será más lenta de lo normal, pero no debería ser tan lenta como la ejecución
setup:static-content:deploy
o `setup: di: compile.Como referencia, estoy ejecutando la versión 2.1.5 .
fuente
Tomado del blog de Alan Storm .
Compilación de inyección de dependencia
Para comenzar, debemos explicar el problema que estos comandos están tratando de resolver. Cuando envía un sistema Magento 2 a producción, debe ejecutar el siguiente comando
Este comando escanea el código en su sistema y genera previamente una serie de cosas (principalmente relacionadas con el sistema del administrador de objetos y la inyección de dependencia) que Magento carga dinámicamente cuando se ejecuta en modo desarrollador. Esto es tanto una cuestión de rendimiento como de seguridad, y discutirlo en su totalidad está más allá del alcance de este artículo.
fuente