Lorsque je démarre un nouveau projet M2, la première chose que je ferais est d'installer le core via composer:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition
Je peux maintenant écrire mes modules et thèmes personnalisés sous app/code
. J'ajouterais alors mon composer.*
et le app/code
dossier entier à mon VCS. Jusqu'à présent, tout va bien.
Supposons maintenant que je veuille utiliser des outils de construction pour mon projet, disons Grunt ou Gulp.
Si je valide le mien
Gruntfile.js
, ce sera écrasé par lemagento/magento2-base
package lorsque j'exécuteraicomposer install
après avoir cloné le dépôt.Si je valide mon
gulpfile.js
, je ne peux pas vraiment définir mes dépendances dans apackage.json
, car il serait également écrasé parmagento/magento2-base
.Si je décide d'utiliser la configuration de Magento Grunt et que je souhaite la personnaliser en modifiant les fichiers sous
/dev/tools/grunt
(par exemplethemes.js
), je ne peux pas car mes modifications seraient écrasées parmagento/magento2-base
.
Je crois comprendre que vous ne pouvez pas vraiment faire grand-chose dans la racine de votre document. Il existe bien sûr de nombreuses solutions à ce problème:
- Je pourrais exécuter un
git checkout -
droit après l'installation pour réinitialiser mes propres fichiers - Je pourrais stocker mes fichiers de construction dans un dossier dédié,
/build
par exemple - Je pourrais utiliser un outil de construction différent, comme Phing, Ant ou Rake (mes développeurs frontaux ne seraient pas si heureux cependant)
- Je pourrais remplacer
magento/magento2-base
par un package personnalisé qui a un mappage personnalisé pour les fichiers de base (pas vraiment optimal mais bon, c'est une option)
Personnellement, je n'aime pas toutes ces options, je voudrais donc savoir s'il existe une façon préférée ou meilleure de réaliser ce que j'essaie de faire.
Quelqu'un a-t-il le même problème? Comment l'avez-vous résolu? Comment structurez-vous votre projet sous VCS?
MISE À JOUR
Un point supplémentaire lié à la configuration du projet. Dans mes expériences, j'ai remarqué que le programme d'installation de Magento composer a un indicateur pour remplacer le fichier:
"extra": {
"magento-force": "override"
}
Il est traité en interne comme un booléen si je ne me trompe pas, j'ai donc essayé de le régler false
pour ignorer la substitution. Lorsque j'exécute, composer install
mon installation échoue car le ou les fichiers sont déjà présents. Fondamentalement, si je ne laisse pas Magento remplacer mes fichiers, je ne peux pas l'installer.
Quel est le but de ce drapeau alors? Est-ce seulement supposé effectuer un contrôle pour moi? Pour être honnête, cela n'a pas beaucoup de sens, mais peut-être que quelqu'un peut faire la lumière sur le sujet.
Gruntfile.js
, gulpfile.js
et package.json
problème est résolu. Le problème abordé dans cette question est toujours applicable aux nouvelles versions de Magento 2 lorsque vous devez changer themes.js
, index.php
ou .htaccess
par exemple.