¿En qué caso necesitamos ejecutar este comando magento setup:di:compile
?
pub/static
¿En qué caso necesitamos ejecutar este comando magento setup:di:compile
?
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.
bin/magento setup:di:compile-multi-tenant
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.
var/generation
?
Action
para probar. - Cargué la página, error. - Borrado di
y generation
carpetas, recargado, funciona. - Agregar nueva dependencia, recargar página, error. Sin embargo, no di
se genera ninguna carpeta. - Eliminar de generation
nuevo, volver a cargar, funciona. Conclusión: elimine la carpeta de generación después de agregar dependencias y no tendrá que ejecutar setup: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 carpetas var/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 la var/di
carpeta hasta que setup:di:compile
se vuelva a ejecutar. Esto significa que solo debe tener la var/generation
carpeta para eliminar.
Curiosamente, esto también funciona con pub/static/*
y setup: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 .
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
php bin/magento setup:di:compile
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.