Situación: estoy ejecutando algunas pruebas gratuitas de Magento 2 y tengo espacio limitado en HD en el VPS. Por esta razón, para reducir el espacio en HD, quiero que Magento vincule los archivos en modo predeterminado o en modo de producción. Me di cuenta de que una instalación predeterminada de Magento 2 es de aproximadamente 420mb una vez que el sitio se ejecuta por primera vez, llega a alrededor de 770mb, por lo que 350mb de esto son archivos copiados.
He modificado: línea app / etc / di.xml:
<item name="default" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Copy</item>
a
<item name="default" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink</item>
Esto funciona bien y el sitio creará correctamente los enlaces simbólicos incluso en el modo predeterminado. Sin embargo, el problema es que el css no se crea o el js-translation.json los archivos que debe crear pero no son:
/pub/static/version1488209436/frontend/Magento/luma/en_US/css/styles-m.css
/pub/static/version1488209436/frontend/Magento/luma/en_US/css/styles-l.css
/pub/static/version1488209436/frontend/Magento/luma/en_US/css/print.css
/pub/static/version1488209436/frontend/Magento/luma/en_US/js-translation.json
Entonces la pregunta es: ¿cómo hago para que Magento también genere estos archivos cuando está en modo predeterminado o en producción y usando enlaces simbólicos?
fuente
Respuestas:
app/etc/di.xml
: agregar nuevo elemento astategiesList
:Suponiendo que está en modo desarrollador, simplemente elimine el contenido
pub/static
y vaya a su página en el navegador: magento regenerará el contenido estático.funcionó para mí en Magento 2.1.4 (styles-m.css se generó y otros archivos se vincularon).
toda la magia sucede en
vendor/magento/framework/App/View/Asset/MaterializationStrategy/Factory.php
:Magento simplemente recorre los
stategiesList
elementos y usa la primera estrategia que admite el activo.¿Cómo hacer que funcione en modo de producción?
Descargo de responsabilidad: este truco contiene edición de archivos principales. tener cuidado.
todo probado en magento 2.1.4
Stores > Configuration > Advanced > Developer > Static Files Settings > No
editar
vendor/magento/framework/App/StaticResource.php
y hacer que lalaunch
función se vea así:elimine el contenido
pub/static
y visite la URL de su tienda en un navegador.fuente
<item name="asset" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Copy</item>
?Cuando no está en modo de producción, Magento 2 intentará crear enlaces simbólicos para algunos recursos estáticos. Puede cambiar ese comportamiento haciendo lo siguiente.
Abra la aplicación / etc / di.xml y busque la sección virtualType name = "developerMaterialization". En esa sección, encontrará un elemento nombre = "view_preprocessed" que debe modificarse o eliminarse. Puede modificarlo cambiando el contenido de Magento \ Framework \ App \ View \ Asset \ MaterializationStrategy \ Symlink a Magento \ Framework \ App \ View \ Asset \ MaterializationStrategy \ Copy
Eliminar los archivos en pub / static. No elimine el archivo .htaccess.
fuente