Lokales bearbeiten von eigenen Modulen [Composer Frage]

Moin,

ich habe ein Composer Setup mit ein paar eigenen Modulen via. “@dev” eingebunden.

Nun würde ich gerne “live” also im richtigen Pfad die Module bearbeiten und die Änderungen direkt in den Modulen sehen die ich bei Composer angegeben habe. Dies ist aktuell nicht so.

Aktuell erstellt mein System lediglich einen Symlink vom packages Ordner zum Vendor, aber die Module die im Shopverzeichnis liegen sind lediglich kopiert und nicht gesymlinked.

Ich hätte gedacht, dass ich in der Composer Json der Module sowas wir machen könnte…

“extra”: {
“oxideshop”: {
“target-directory”: “mycomp/module”,
“options”: {
“symlink”: true
}
}
},

Das hat jedoch nicht geklappt.

Ich benötige das, da ich mehrere Leute auf den Themen laufen lasse und teilweise zwischen alten Oxid Versionen springen, dort hatten wir kein Composer im Einsatz. Außerdem finde ich es definitiv schwierig, dass man potentiell die Änderungen an Modulen an zwei stellen pflegen müsste.

Gibt es ein Setting dort vielleicht mit einem Symlink zu arbeiten o.ä. ?

Würde mich freuen wenn ihr hier einmal eure Erfahrungen und/oder “Best Practices” reinschreibt.

Vielen Dank!

In 6.2 wird fast alles aus der Metadata.php in der yaml Datei und in der Datenbank gecached, daher musst du bei Änderungen in der Metadata die Modulkonfiguration neu installieren.
Siehe Punkt 2 hier:
https://docs.oxid-esales.com/developer/en/6.2/development/modules_components_themes/module/tutorials/module_setup.html

Moin,

danke für deine Antwort.

Jedoch verstehe ich diese nicht ganz…

Mein Frage war, wenn ich Composer durchführe und das System dann unter

var/www/html/oxid/source/

habe und dort meine per @dev eingebundenen Module bearbeite wie ich die Änderungen gleichzeitig in den Modulen ind var/www/html/oxid/modules passieren, das sind die Module die sich der Composer im Endeffekt zieht.

Du musst neben den Pfad:

"extra": {
  "oxideshop": {
    "target-directory": "mycomp/module"
  }
},

Noch über autoload Composer mitteilen worüber Deine Modullogik geladen werden soll:

"autoload": {
  "psr-4": {
    "<vendor>\\<module-name>\\": "../../../source/modules/<vendor>/<module-name>"
  }
},

https://docs.oxid-esales.com/developer/en/6.2/development/modules_components_themes/module/skeleton/composerjson/module_via_composer.html#autoload

Die Option Symlink braucht es gar nicht, den Symlink setzt das OXID Composer Plugin bei der Composer Installation/Update.

Der Modulcode sollte bei eigenen Modulen, welche nicht über Composer aus einem fremden Repository geladen werden nicht im vendor Verzeichnis liegen. Das vendor Verzeichnis ist ein generisches Verzeichnis.

Ggfs. müssen in Deinen Modulen noch die PHP Namespaces gesetzt werden.