¿Qué comandos de compilación se necesitan en modo desarrollador y cuándo?

24

¿Alguien puede darme instrucciones sobre cuándo ejecutar qué comandos de compilación en el modo desarrollador de Magento 2? No estoy seguro si lo entiendo bien todavía.

En los devdocs, el modo desarrollador se describe de la siguiente manera:

  • Los archivos de vista estática no se almacenan en caché; se escriben en el directorio pub / static de Magento cada vez que se llaman

¿Eso significa que cada archivo individual en pub / static se genera cuando se solicita y nunca necesita llamar setup:static-content:deploy? Esto contradice mi experiencia. ¿O puedo eliminar los archivos y se regenerarán? Además, las imágenes, los archivos CSS y JS parecen ser tratados de manera diferente.

La página de documentación del modo desarrollador no dice nada sobre la compilación de código, pero creo que también hubo una diferencia, por lo que no fue necesario ejecutar setup:di:compiledespués de todos los cambios en los di.xmlarchivos. ¿Es correcto y, de ser así, cómo funciona la generación de código en modo desarrollador?

En otras palabras: aparte de caché, ¿qué comandos necesito ejecutar después de qué cambios?

Fabian Schmengler
fuente

Respuestas:

27

preste atención: he experimentado que en el modo de desarrollador, eliminarlo pub/staticromperá el mecanismo porque se deshace del .htaccessarchivo que hace la magia en esa carpeta.

Si mantiene el pub/static/.htaccessarchivo en modo desarrollador, no necesita ejecutar ningún comando de compilación: Magento creará enlaces simbólicos a los archivos tan pronto como se soliciten. Eso significa que los cambios en los activos estáticos serán visibles de inmediato, siempre que también tenga deshabilitada la caché.

Puede eliminar el pub/static/frontendo en su pub/static/adminhtmllugar.

En el modo predeterminado, los activos se materializan en una pub/staticsubcarpeta, lo que significa que se crean (copian, no enlazan) en la primera solicitud. Si los modifica, debe vaciar el caché para actualizarlos.

En el modo de producción, los activos no se materializan (lo que provoca un error HTTP 404 a petición) hasta que ejecute el bin/magento setup:static-content:deploycomando.

Espero eso ayude.

Alessandro Ronchi
fuente
¿Qué pasa con la compilación DI?
Erfan
@Erfan, ¿a qué te refieres con más precisión?
Alessandro Ronchi
2
La pregunta también se refiere al efecto del modo de implementación en la compilación DI. Acabo de hacer una prueba rápida, y si está en modo desarrollador, no necesita compilar DI para di.xmlque aparezcan sus cambios (¿parece que la generación de código se realiza sobre la marcha por golpe de página?) De todos modos, ¡Pensé que sería una buena adición a tu ya buena respuesta!
Erfan
Tienes razón @Erfan
Alessandro Ronchi
1+ Gracias hermano. Trabajado como un encanto. Tuve una muy mala experiencia ejecutando comandos de implementación repetidamente para obtener mis cambios de menos a CSS incluso en modo desarrollador. Copié .htaccess de otro proyecto y lo pegué en la ubicación mencionada. Khalaaas!
Umar Yousaf
4

desde mi experiencia, no necesita ejecutar ningún comando para la generación de código / archivo estático en modo desarrollador.

Si no se generaron los archivos estáticos, puede haber otro problema.

Veo dos razones para eso a primera vista:

  • El modo desarrollador no funciona correctamente. tal vez la activación falló por alguna razón
  • la reescritura de archivos estáticos en el pub / static.php no funciona
David Verholen
fuente
1
Mi archivo menos en pub / static no se vuelve a generar. ¿Tienes este problema? Cómo hacer que se auto regenere
mrtuvn
Es importante que el modo desarrollador esté activo y que las reescrituras funcionen, ya que cualquier solicitud de archivos estáticos se reescribe primero en pub / static.php, que luego genera el archivo (en modo desarrollador) en pub / static si aún no está presente.
David Verholen
4

¿Eso significa que cada archivo individual en pub / static se genera cuando se solicita y nunca necesita llamar setup:static-content:deploy? Esto contradice mi experiencia. ¿O puedo eliminar los archivos y se regenerarán?

Sí. Pero según mi experiencia, esto no funciona la mayor parte del tiempo. Puede ser un error. La mejor solución es eliminar pub/staticcontenido e implementar contenido estático nuevamente cada vez que cambie un archivo estático (js, css, html, etc.) incluso si ya ha activado el modo desarrollador. Mi propia pregunta sobre esto.

Janaka Dombawela
fuente
Depende de la forma en que lo veas. Si desea ejecutar setup: static-content: despliegue cada vez que realice un cambio, le llevará años terminar un proyecto porque básicamente está creando cada archivo para su tienda cuando solo está actualizando un archivo. Entonces, mi solución fue sobrescribir los archivos dentro de pub / static y borrar el caché para ver mis cambios. Una vez que esté satisfecho con mis resultados, iré a mi tema o archivos de módulos personalizados para sobrescribir mis archivos principales y luego ejecutaré setup: static-content: deploy para actualizar mis archivos estáticos.
Wolfgang Leon el
4

Solo para aclarar entre los tres modos diferentes (fuente: curso de Fundamentos de Magento U). En negrita, los puntos específicos relacionados con su pregunta.

modo desarrollador

  • La materialización de archivos estáticos no está habilitada.
  • Excepciones no detectadas que se muestran en el navegador
  • Excepciones lanzadas en el controlador de errores, no registrado
  • Sistema de inicio de sesión var/report, altamente detallado.

Debe usar el modo Desarrollador mientras desarrolla personalizaciones o extensiones. El principal beneficio de este modo es que los mensajes de error son visibles para usted. No debe usarse en producción debido a su impacto en el rendimiento. En el modo de desarrollador, los archivos de vista estática se generan cada vez que se solicitan. Se escriben en el pub/staticdirectorio, pero este caché no se usa. Esto tiene un gran impacto en el rendimiento, pero cualquier cambio que haga un desarrollador para ver los archivos es inmediatamente visible.

Las excepciones no capturadas se muestran en el navegador, en lugar de registrarse. Se produce una excepción cada vez que no se puede invocar a un suscriptor de eventos.

El inicio de sesión del sistema var/reportes muy detallado en este modo.

Modo de producción

  • Fase de implementación en el sistema de producción; mayor rendimiento
  • Las excepciones no se muestran al usuario, escritas solo en los registros.
  • Este modo deshabilita la materialización de archivos estáticos.
  • El docroot de Magento puede tener permisos de solo lectura.

Debe ejecutar Magento en modo Producción una vez que se implemente en un servidor de producción.

El modo de producción proporciona el mayor rendimiento en Magento 2.

El aspecto más importante de este modo es que los errores se registran en el sistema de archivos y nunca se muestran al usuario. En este modo, los archivos de vista estática no se crean sobre la marcha cuando se solicitan; en su lugar, deben implementarse en el pub/staticdirectorio utilizando la herramienta de línea de comandos. Las páginas generadas contendrán enlaces directos a los recursos de la página desplegada.

Cualquier cambio para ver los archivos requiere ejecutar la herramienta de implementación nuevamente.

Debido a que los archivos de vista se implementan utilizando la herramienta CLI, el usuario web necesita tener acceso de escritura. El pub/staticdirectorio de Magento puede tener permisos de solo lectura, que es una configuración más segura en un servidor de acceso público.

Modo por defecto

  • Se usa cuando no se especifica otro modo
  • Oculta excepciones del usuario y las escribe en los archivos de registro.
  • La materialización de archivos estáticos está habilitada.
  • No recomendado / no optimizado para la producción: el almacenamiento en caché afecta negativamente al rendimiento.

Como su nombre lo indica, el modo predeterminado es cómo funciona el software Magento si no se especifica otro modo.

En este modo, los errores se registran en los archivos var/reportsy nunca se muestran a un usuario. Los archivos de vista estática se materializan sobre la marcha y luego se almacenan en caché.

A diferencia del modo desarrollador, los cambios en el archivo de vista no son visibles hasta que se borran los archivos de vista estática generados.

El modo predeterminado no está optimizado para un entorno de producción, principalmente debido al impacto adverso en el rendimiento de los archivos estáticos que se materializan sobre la marcha en lugar de generarlos y desplegarlos de antemano .

En otras palabras, crear archivos estáticos sobre la marcha y almacenarlos en caché tiene un mayor impacto en el rendimiento que generarlos utilizando la herramienta de línea de comandos de creación de archivos estáticos.

Raphael en Digital Pianism
fuente