Quando avvio un nuovo progetto M2, la prima cosa che vorrei fare è installare il core tramite compositore:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition
Ora posso scrivere i miei moduli personalizzati e i miei temi in app/code
. Vorrei quindi aggiungere la mia composer.*
e l'intera app/code
cartella al mio VCS. Finora tutto bene.
Supponiamo che ora voglia usare alcuni strumenti di costruzione per il mio progetto, diciamo Grunt o Gulp.
Se commetto il mio
Gruntfile.js
, questo verrà sovrascritto dalmagento/magento2-base
pacchetto quando corrocomposer install
dopo aver clonato il repository.Se commetto il mio
gulpfile.js
, non posso davvero definire le mie dipendenze in apackage.json
, perché sarebbe anche sovrascritto damagento/magento2-base
.Se decido di utilizzare il programma di installazione di Grento di Magento e voglio personalizzarlo modificando i file in
/dev/tools/grunt
(ad es.themes.js
), Non posso perché le mie modifiche verrebbero sovrascrittemagento/magento2-base
.
La mia comprensione è che non puoi davvero fare molto nella radice del tuo documento. Esistono ovviamente molte soluzioni a questo problema:
- Potrei eseguire
git checkout -
subito dopo l'installazione per ripristinare i miei file - Potrei archiviare i miei file di build in una cartella dedicata,
/build
ad esempio - Potrei usare uno strumento di costruzione diverso, come Phing, Ant o Rake (i miei sviluppatori frontend non sarebbero così felici)
- Potrei sostituire
magento/magento2-base
con un pacchetto personalizzato che ha una mappatura personalizzata per i file core (non proprio ottimale ma ehi, è un'opzione)
Personalmente non mi piacciono tutte queste opzioni, quindi vorrei sapere se esiste un modo preferito o migliore per ottenere ciò che sto cercando di fare.
qualcuno sta avendo lo stesso problema? come l'hai risolto? Come strutturi il tuo progetto in VCS?
AGGIORNARE
Un punto in più legato alla configurazione del progetto. Nei miei esperimenti ho notato che il programma di installazione del compositore Magento ha un flag per l'override dei file:
"extra": {
"magento-force": "override"
}
È considerato internamente come un valore booleano se non sbaglio, quindi ho cercato di impostarlo false
per saltare l'override. Quando eseguo la composer install
mia installazione non riesce a causa dei file già presenti. Fondamentalmente, se non lascio che Magento sovrascriva i miei file, non posso installarlo.
Qual è lo scopo di questa bandiera allora? Supponiamo solo di eseguire un controllo per me? Non ha molto senso per me essere sincero, ma forse qualcuno può fare luce sull'argomento.
Gruntfile.js
, gulpfile.js
e package.json
problema è risolto. Il problema risolto in questa domanda è ancora applicabile alle versioni più recenti di Magento 2 quando è necessario modificarle o themes.js
, ad esempio. index.php
.htaccess