Wie kompiliere ich administration js?

Hallo Community,

ich bin neu in der Shopware Entwicklung und arbeite mich gerade in diverse Themen ein.

Dazu möchte ich eine neue „Rule“ im „Rule builder“ anlegen. Es gibt glücklicherweise eine sehr ausführliche Doku dazu inkl. eines ausführbaren Plugins.

Die Doku habe ich soweit verstanden und für mein Beispiel adaptiert. Leider wird mir meine Rule nicht im Admin Bereich angezeigt. Das Beispielplugin „Is lunar eclipse today“ wird jedoch angezeigt.

Der einzige Unterschied, den ich jetzt feststellen konnte, ist die kompilierte custom-rule.js.

Wie wird diese generiert? Die Befehle „bin/console theme:compile“, „bin/console plugin:refresh“ und „bin/console cache:clear“ reichen hier anscheinend nicht aus.

Vielen Dank schonmal im Vorfeld

Viele liebe Grüße

Steve

./psh.phar administration:build

https://developer.shopware.com/docs/guides/plugins/plugins/administration/add-custom-component#loading-the-js-files

Hey und vielen Dank für die Hilfestellung,

im folgenden fasse ich meine Schritte mal zusammen, damit ich und vielleicht andere später nochmal nachlesen können, was benötigt wird:

  • development theme herunterladen (/custom/plugins/development)
  • ins Verzeichnis wechseln und „composer install“ ausführen (eventuelle Fehlermeldungen beheben. Ich brauchte überall aktuelle Libraries, aktuell jedoch php 7.4 und nicht php 8)
  • ./psh.phar administration:install-dependencies
  • ./psh.phar administration:build

Leider besteht noch immer das Problem, dass in meinem Plugin keine Datei Namens „src/Resources/public/administration/js/custom-rule.js“ generiert wurde.

Folgende Ausgabe wird erzeugt:

(1/3) Starting
> bin/console bundle:dump
	
	 [OK] Dumped plugin configuration.                                              
	
	
(2/3) Starting
> PROJECT_ROOT=/shop/custom/plugins/development ENV_FILE=/shop/custom/plugins/development/.env npm run --prefix vendor/shopware/platform/src/Administration/Resources/app/administration/ build
	
	> administration@1.0.0 build
	> mode=production webpack
	
	# Compiling with Webpack configuration
	# Production mode is activated 🚀
	# Plugin "Storefront": Injected successfully
	
	Time: 17307ms
	Entrypoint commons = static/js/runtime.js static/css/vendors-node.css static/js/vendors-node.js static/js/vendors-node.js.map static/js/commons.js
	Entrypoint app = static/js/runtime.js static/css/vendors-node.css static/js/vendors-node.js static/js/vendors-node.js.map static/css/app.css static/js/app.js
	Entrypoint storefront = static/js/runtime.js static/css/vendors-node.css static/js/vendors-node.js static/js/vendors-node.js.map static/css/storefront.css static/js/storefront.js
	   3857 modules
	
(3/3) Starting
> bin/console assets:install
	Copying files for bundle: FrameworkBundle
	Copying files for bundle: MonologBundle
	Copying files for bundle: SensioFrameworkExtraBundle
	Copying files for bundle: TwigBundle
	Copying files for bundle: WebProfilerBundle
	Copying files for bundle: DebugBundle
	Copying files for bundle: EnqueueBundle
	Copying files for bundle: EnqueueAdapterBundle
	Copying files for bundle: Framework
	Copying files for bundle: System
	Copying files for bundle: Content
	Copying files for bundle: Checkout
	Copying files for bundle: Profiling
	Copying files for bundle: Administration
	Copying files for bundle: Docs
	Copying files for bundle: Storefront
	Copying files for bundle: Elasticsearch
	Copying files for bundle: DbalKernelPluginLoader
	
	 [OK] Successfully copied all bundle files                                      
	
	
Duration: 22s
All commands successfully executed!

Was habe ich falsch gemacht? Wie generiere ich die Datei?

PS: hier nochmal ein Auszug des Dateibaums vom Plugin:

Ok, ich hatte das Prinzip vom „Production template“ und „Development template“ nicht verstanden. Damit handelt es sich um kein Template, sondern die Umgebung, in der ich meinen Shop habe. Da ich ein „Production template“ nutze, habe ich nun folgendes ausgeführt:

./bin/build-administration.sh

Auch hier leider wieder keine Verbesserung. Die dringend benötigte Javascript Datei wird einfach nicht erzeugt. Hat jemand eine Idee?

Gibt es niemanden, der helfen kann? Mir ist das Prinzip des Generierens immer noch nicht klar. Was muss man machen, damit eine Plugin public/*.js Datei generiert wird?

Weder

./bin/build-administration.sh

in der Produktionsumgebung noch

./psh.phar administration:build

in der Developmenet Umgebung führt zum Ziel.

Finally, ich habe den Fehler finden können. Nachdem ich im Backend versucht habe das Plugin zu deaktivieren bzw. deinstallieren, habe ich endlich eine Fehlermeldung finden können.

Ich hatte den Pfad der „autoload“ angepasst in:

  "autoload": {
    "psr-4": {
      "MeinTheme\\": "src/Core/"
    }
  },

Jetzt wurde dadurch aber die eigentliche Klasse MeinTheme.php nicht mehr gefunden. Eine einfache Änderung des Pfades zurück in

  "autoload": {
    "psr-4": {
      "MeinTheme\\": "src/"
    }
  },

hat Abhilfe geschaffen (inkl. Verschiebung aller Klassen aus dem „Core“ Verzeichnis heraus).

Danach gab es keine Fehlermeldungen mehr im Backend und der Befehl

./bin/build-administration.sh

hat erfolgreich die Javascript Datei erzeugt.