Wenn ich ein neues M2-Projekt starte, muss ich zuerst den Core über Composer installieren:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition
Ich kann jetzt meine benutzerdefinierten Module und Themen unter schreiben app/code. Ich würde dann meinen composer.*und den gesamten app/codeOrdner zu meinem VCS hinzufügen . Soweit ist alles in Ordnung.
Angenommen, ich möchte jetzt einige Build-Tools für mein Projekt verwenden, beispielsweise Grunt oder Gulp.
Wenn ich meine eigene festschreibe
Gruntfile.js, wird diese durch dasmagento/magento2-basePaket überschrieben , wenn ichcomposer installnach dem Klonen des Repos starte.Wenn ich mein festschreibe
gulpfile.js, kann ich meine Abhängigkeiten in a nicht wirklich definierenpackage.json, da es auch von überschrieben würdemagento/magento2-base.Wenn ich mich für das Grunt-Setup von Magento entscheide und es anpassen möchte, indem ich die Dateien unter
/dev/tools/grunt(z. B.themes.js) bearbeite , kann ich das nicht, da meine Änderungen von überschrieben würdenmagento/magento2-base.
Meines Wissens nach können Sie in Ihrem Dokumentenstamm nicht wirklich viel tun. Es gibt natürlich viele Lösungen für dieses Problem:
- Ich könnte
git checkout -direkt nach der Installation eine ausführen , um meine eigenen Dateien zurückzusetzen - Ich konnte meine Build - Dateien in einem speziellen Ordner speichern
/buildzum Beispiel - Ich könnte ein anderes Build-Tool wie Phing, Ant oder Rake verwenden (meine Frontend-Entwickler wären allerdings nicht so glücklich)
- Ich könnte
magento/magento2-basemit einem benutzerdefinierten Paket ersetzen , das eine benutzerdefinierte Zuordnung für Kerndateien hat (nicht wirklich optimal, aber hey, es ist eine Option)
Ich persönlich mag all diese Optionen nicht, daher würde ich gerne wissen, ob es einen bevorzugten oder besseren Weg gibt, um das zu erreichen, was ich versuche.
Hat jemand das gleiche Problem? Wie hast du das gelöst? Wie strukturieren Sie Ihr Projekt unter VCS?
AKTUALISIEREN
Ein zusätzlicher Punkt im Zusammenhang mit der Projekteinrichtung. In meinen Experimenten habe ich festgestellt, dass der Magento Composer Installer ein Flag zum Überschreiben von Dateien hat:
"extra": {
"magento-force": "override"
}
Es wird intern als boolescher Wert behandelt, wenn ich mich nicht irre. Deshalb habe ich versucht, ihn so einzustellen, dass das falseÜberschreiben übersprungen wird. Beim Ausführen composer installschlägt meine Installation fehl, da die Datei (en) bereits vorhanden sind. Grundsätzlich kann ich Magento nicht installieren, wenn ich meine Dateien nicht überschreiben lasse.
Was ist dann der Zweck dieser Flagge? Soll ich nur eine Überprüfung für mich durchführen? Um ehrlich zu sein, macht es für mich wenig Sinn, aber vielleicht kann jemand etwas Licht in das Thema bringen.
Gruntfile.js, gulpfile.jsund package.jsonist Problem gelöst. Das Problem adressiert in dieser Frage ist nach wie vor für neuere Magento 2 Versionen , wenn Sie ändern müssen themes.js, index.phpoder .htaccesszum Beispiel.