Hey Leute, ich möchte externe node.js Module im Storefront nutzen. Ich bekomme beim storefront:build immer Fehlermeldungen like:
Module not found: Error: Can't resolve 'rbush' in '/home/vagrant/shopware-dev/custom/plugins/MeinPlugin/src/Resources/node_modules/ol/renderer/canvas'
Das liegt daran, dass die Import-Pfade in den node.js Modulen selbst nicht relativ sind… also z.B.
import rbush from 'rbush';
müsste in meinem Plugin jetzt eigentlich
import rbush from '../../rbush/rbush';
sein…
Jedoch nutze ich genau die selben Module in meiner Backend-App, d.h. beim administration:build wird mein node_modules Ordner irgendwie indexiert oder migriert, weil ich dort keinen Fehler erhalte und auch wie erwartet die externen Module nutzen kann.
Hat jemand eine Idee wie ich das auch fürs storefront:build hin bekomme?
Alternative wäre jetzt den node_modules Ordner im Storefront zu erweitern, jedoch ist das nur Plan B.
Okay das ist mir neu mit der webpack.config.js - bist du da von selbst darauf gekommen oder gibt es innerhalb von Shopware Beispiele oder Dokumentationen?
Hier findest du ein Beispiel wie ich es gelöst habe.
Sehr Cool, Danke. Das scheint grundsätzlich so zu funktionieren, allerdings nur wenn ich mein Theme/Plugin builde. Im HMR-Modus gehts leider nicht. Als Workaround hab ich jetzt alle Dependencies aus meinem ThemePlugin in meiner Vagrantbox mit in den Core installiert, ist aber auch keine Dauerlösung.
Hat wunderbar funktioniert. Jetzt habe ich eine weitere Frage: Ist es möglich aus einem npm Modul einen bestimmten Ordner in den asset Ordner vom Storefront zu schieben? In meinem Fall geht es um die Schriftarten (FontAwesome 5), die ich ansonsten redundant in den asset Ordner packen müsste. Ist halt ein Luxusproblem, aber das wäre schon echt nice.
@Moorleiche Für die Storefront passt das bei mir auch, geht es bei dir auch für die Adminstration? Denn sobald ich es dort verwende - natürlich mit angepassten Pfad - zerschießt er die Kompilierung und core Module usw. werden nicht mehr gefunden. Bei dir auch?
habe das gleiche Problem. Beim Bauen mit “storefront:build” funktioniert alles wie gewünscht.
Was nicht funktioniert ist der HMR-Modus mit z. B. “storefront:hot-proxy”.