Cuando comienzo un nuevo proyecto M2, lo primero que haría es instalar el núcleo a través del compositor:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition
Ahora puedo escribir mi (s) módulo (s) personalizado (s) y tema (s) debajo app/code
. Luego agregaría mi composer.*
y toda la app/code
carpeta a mi VCS. Hasta ahora todo está bien.
Supongamos que ahora quiero usar algunas herramientas de compilación para mi proyecto, digamos Grunt o Gulp.
Si confirmo el mío
Gruntfile.js
, elmagento/magento2-base
paquete lo sobrescribirá cuando lo ejecutecomposer install
después de clonar el repositorio.Si confirmo mi
gulpfile.js
, realmente no puedo definir mis dependencias en apackage.json
, porque también sería sobrescrito pormagento/magento2-base
.Si decido usar la configuración de Magento's Grunt y quiero personalizarla editando los archivos en
/dev/tools/grunt
(pthemes.js
. Ej. ), No puedo porque mis cambios se sobrescribiránmagento/magento2-base
.
Entiendo que realmente no puedes hacer mucho en la raíz de tu documento. Por supuesto, hay muchas soluciones a este problema:
- Podría ejecutar un
git checkout -
derecho después de la instalación para restablecer mis propios archivos - Podría almacenar mis archivos de compilación en una carpeta dedicada,
/build
por ejemplo - Podría usar una herramienta de compilación diferente, como Phing, Ant o Rake (mis desarrolladores frontend no estarían tan contentos)
- Podría reemplazarlo
magento/magento2-base
con un paquete personalizado que tenga un mapeo personalizado para los archivos principales (no es realmente óptimo, pero bueno, es una opción)
Personalmente no me gustan todas estas opciones, por lo que me gustaría saber si hay una forma preferida o mejor de lograr lo que estoy tratando de hacer.
alguien esta teniendo el mismo problema? ¿Cómo lo resolviste? ¿Cómo estructura su proyecto bajo VCS?
ACTUALIZAR
Un punto extra relacionado con la configuración del proyecto. En mis experimentos, noté que el instalador del compositor Magento tiene una marca para anular archivos:
"extra": {
"magento-force": "override"
}
Se trata internamente como un booleano si no me equivoco, así que traté de configurarlo false
para omitir la anulación. Cuando ejecuto composer install
mi instalación falla debido a que los archivos ya están presentes. Básicamente, si no dejo que Magento anule mis archivos, no puedo instalarlo.
¿Cuál es el propósito de esta bandera entonces? ¿Se supone que solo debe realizar una verificación por mí? Para mí, no tiene mucho sentido ser honesto, pero tal vez alguien pueda arrojar algo de luz sobre el tema.
Gruntfile.js
, gulpfile.js
y el package.json
problema está resuelto. El problema abordado en esta pregunta todavía es aplicable a las versiones más recientes de Magento 2 cuando necesita cambiar themes.js
, index.php
o .htaccess
por ejemplo.