Querido Diario,

Aprovechando que ayer se publicó la versión 6.4 de Shopware, voy crear mi tienda de demo desde 0, intentando llenar los vacíos que no encuentro en la documentación (y que cometo el error de comparar contra Magento).

Como primer paso, creé mi entorno local con docker, copiando el mismo stack que normalmente uso con Magento2.

Ya te he contado sobre la instalación y sobre las distintas formas que existen (las cuales a veces me funcionaron bien, otras no tanto). Como no encontré aún un documento que me diga cuál es la mejor, decidí ir por el instalador web, el cual se encuentra en la página de descarga.

Y allí bajé el archivo zip con la versión 6.4.0.0.

Luego seguí los pasos aquí descriptos.

Accedí al navegador y comenzó el proceso de instalación.

No te vuelvo a contar cuáles son los pasos de la instalación ni las opciones porque son las mismas que ya te conté alguna vez. No hay novedades ahí (casi), pero si te interesa repasar, escribí algo en este post.

Que la lista de monedas siga siendo tan acotada y que los países estén totalmente desordenados, son un detalle que podría intentar mejorar (aún no se cómo, pero tengo intención de descubrirlo).

El «casi» de la instalación fue porque se cambia alguna configuración al final, agregando integración con marketplaces (de pago, como un nuevo canal, opciones como Amazon o Ebay).

Luego todo siguió más o menos como hasta ahora. Incluso tuve que aplicar el cambio de la moneda porque el Peso Argentino, como otras tantísimas monedas, siguen sin estar presente por defecto.

Así como el proceso de instalación pareciera no tener una forma oficial o principal, hay otro detalle que no logré aún confirmar: ¿qué archivos sí y qué archivos no debo incluir en mi repositorio?. Antes de la instalación pude ver que estos eran los archivos que tenía sin versionar.

Ya había agregado todos los archivos al repositorio, por lo que al finalizar la instalación, la diferencia fue esta.

  • var/plugins.json
  • .env
  • .idea/
  • .uniqueid.txt
  • custom/plugins/SwagMarkets/
  • custom/plugins/SwagPayPal/
  • install.lock
  • public/.htaccess
  • public/bundles/storefront/assets/
  • public/bundles/swagmarkets/
  • public/media/
  • public/sitemap/
  • public/theme/
  • var/cache/
  • var/log/
  • var/theme-variables.scss

En var/plugins.json encontré estos cambios.

diff --git a/var/plugins.json b/var/plugins.json
index c89f834e..a1292992 100644
--- a/var/plugins.json
+++ b/var/plugins.json
@@ -71,24 +71,6 @@
             "styleFiles": []
         }
     },
-    "Profiling": {
-        "basePath": "vendor\/shopware\/core\/Profiling\/",
-        "views": [
-            "Resources\/views"
-        ],
-        "technicalName": "profiling",
-        "administration": {
-            "path": "Resources\/app\/administration\/src",
-            "entryFilePath": null,
-            "webpack": null
-        },
-        "storefront": {
-            "path": "Resources\/app\/storefront\/src",
-            "entryFilePath": null,
-            "webpack": null,
-            "styleFiles": []
-        }
-    },
     "Administration": {
         "basePath": "vendor\/shopware\/administration\/",
         "views": [
@@ -123,7 +105,8 @@
             "entryFilePath": "Resources\/app\/storefront\/src\/main.js",
             "webpack": null,
             "styleFiles": [
-                "vendor\/shopware\/storefront\/Resources\/app\/storefront\/src\/scss\/base.scss",
+                "\/var\/www\/html\/vendor\/shopware\/storefront\/Resources\/app\/storefront\/src\/scss\/base.scss",
+                "\/var\/www\/html\/vendor\/shopware\/storefront\/Resources\/app\/storefront\/src\/scss\/skin\/shopware\/_base.scss",
                 "@Plugins"
             ]
         }
@@ -145,5 +128,23 @@
             "webpack": null,
             "styleFiles": []
         }
+    },
+    "SwagMarkets": {
+        "basePath": "custom\/plugins\/SwagMarkets\/src\/",
+        "views": [
+            "Resources\/views"
+        ],
+        "technicalName": "swag-markets",
+        "administration": {
+            "path": "Resources\/app\/administration\/src",
+            "entryFilePath": "Resources\/app\/administration\/src\/main.js",
+            "webpack": null
+        },
+        "storefront": {
+            "path": "Resources\/app\/storefront\/src",
+            "entryFilePath": null,
+            "webpack": null,
+            "styleFiles": []
+        }
     }
 }
\ No newline at end of file
(END)
-        ],
-        "technicalName": "profiling",
-        "administration": {
-            "path": "Resources\/app\/administration\/src",
-            "entryFilePath": null,
-            "webpack": null
-        },
-        "storefront": {
-            "path": "Resources\/app\/storefront\/src",
-            "entryFilePath": null,
-            "webpack": null,
-            "styleFiles": []
-        }
-    },
     "Administration": {
         "basePath": "vendor\/shopware\/administration\/",
         "views": [
@@ -123,7 +105,8 @@
             "entryFilePath": "Resources\/app\/storefront\/src\/main.js",
             "webpack": null,
             "styleFiles": [
-                "vendor\/shopware\/storefront\/Resources\/app\/storefront\/src\/scss\/base.scss",
+                "\/var\/www\/html\/vendor\/shopware\/storefront\/Resources\/app\/storefront\/src\/scss\/base.scss",
+                "\/var\/www\/html\/vendor\/shopware\/storefront\/Resources\/app\/storefront\/src\/scss\/skin\/shopware\/_base.scss",
                 "@Plugins"
             ]
         }
@@ -145,5 +128,23 @@
             "webpack": null,
             "styleFiles": []
         }
+    },
+    "SwagMarkets": {
+        "basePath": "custom\/plugins\/SwagMarkets\/src\/",
+        "views": [
+            "Resources\/views"
+        ],
+        "technicalName": "swag-markets",
+        "administration": {
+            "path": "Resources\/app\/administration\/src",
+            "entryFilePath": "Resources\/app\/administration\/src\/main.js",
+            "webpack": null
+        },
+        "storefront": {
+            "path": "Resources\/app\/storefront\/src",
+            "entryFilePath": null,
+            "webpack": null,
+            "styleFiles": []
+        }
     }
 }
\ No newline at end of file

Voy a asumir que este archivo se debe versionar.

Lo que sigue es el archivo .env. Ahí están los datos de configuración a los servicios necesarios.

# This file is a "template" of which env vars need to be defined for your application
# Copy this file to .env file for development, create environment variables when deploying to production
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration

###> symfony/framework-bundle ###
APP_ENV="prod"
APP_SECRET="def00248f3bd720f88351f221d6191b820cfb82d1e26c366a259c7e47df294c1747a1c8773065b0eb2c6263d03219a3e06bb19dc496c32c8e63bc000993d15c39e109ae0"
APP_URL="https://www.dominio.com.ar"
#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
#TRUSTED_HOSTS=localhost,example.com
###< symfony/framework-bundle ###

###> symfony/swiftmailer-bundle ###
# For Gmail as a transport, use: "gmail://username:password@localhost"
# For a generic SMTP server, use: "smtp://localhost:25?encryption=&auth_mode="
# Delivery is disabled by default via "null://localhost"
MAILER_URL=null://localhost
###< symfony/swiftmailer-bundle ###

DATABASE_URL="mysql://usuario:contraseña@hostname:3306/database_name"
COMPOSER_HOME="/var/www/html/var/cache/composer"
INSTANCE_ID="4wSzyZqjZNuuG6n5vO70Dg0sGN3r0fzV"
BLUE_GREEN_DEPLOYMENT="1"
SHOPWARE_HTTP_CACHE_ENABLED="1"
SHOPWARE_HTTP_DEFAULT_TTL="7200"
SHOPWARE_ES_HOSTS=""
SHOPWARE_ES_ENABLED="0"
SHOPWARE_ES_INDEXING_ENABLED="0"
SHOPWARE_ES_INDEX_PREFIX="sw"
SHOPWARE_CDN_STRATEGY_DEFAULT="id"

Este archivo no voy a versionarlo. Llegado el momento ha de montarse a los archivos del proyecto (más adelante te cuento sobre esto). Ya tengo mi primer archivo a ignorar (junto al directorio .idea).

Luego tengo el archivo .uniqueid.txt, que contiene un hash (supongo) para identificar a mi instancia (no encuentro información que pueda compartirte sobre todas sus razones de ser). Es otro archivo a incluir en el ignore.

Los plugins, sospecho, no tienen que ser excluídos. Voy a comprar esa idea.

Se que install.lock tiene sentido si necesitás recuperar la tienda (no tengo claro qué implica recuperarla aún) y ese archivo evita que trate de reinstalarse por completo. Quizás haya más funcionalidad asociada, pero aún no lo sé. Este archivo no lo voy a incluir en el ignore porque luego subiré la base de datos completa. No haré instalación manual en el servidor productivo.

/public/.htaccess se versionará, al igual que el contenido de public/bundles.

/public/media y /public/sitemap/ si se van a incluir en el ignore. No quiero versionar eso. Lo que sí hice fue agregar el archivo .gitkeep.

/public/theme/ se versiona. No veo (aún) por qué no debería hacerlo.

Finalmente me quedaron los archivos y directorios /var/cache/, /var/log/ y /var/theme-variables.scss. Todo eso se envía al ignore también.

El .gitignore me quedó así:

/.idea/
/.env
/.uniqueid.txt
/public/media/*
!/public/media/.gitkeep
/public/sitemap/*
!/public/sitemap/.gitkeep
/var/cache/*
/var/log/*
/var/theme-variables.scss

Y esto es todo lo que puedo contarte hoy. El siguiente paso será subirlo a un servidor para ver si todo esto tuvo sentido y la tienda se replica correctamente.