MetaModels Workshop in Berlin
Ergebnis 1 bis 40 von 40

Thema: Webpack Encore

  1. #1
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard Webpack Encore

    Hallo,
    ich teste gerade "Webpack Encore" ( s. ScreenCast: https://symfonycasts.com/screencast/webpack-encore ) -
    als lokalen Workflow - sprich über Node/npm Installation ( also unabhängig von Symfony ).

    Gegenüber der reinen "Webpack" Umsetzung ist die Konfiguration erheblich übersichtlicher.
    Allerdings weiß ich nun nicht wie ich im Anschluß dies in Contao einsetzen kann.

    A)
    Die Möglichkeiten des "Assets Versioning" ( https://symfony.com/doc/current/fron...ersioning.html / "entrypoints.json" / "manifest.json" )
    bzw. die Einbindung via "encore_entry_script_tags()" und "encore_entry_link_tags()" in Twig Templates ist ja so in Contao nicht gegeben.

    Nutzt es wenn ich in diesem Zusammenhang dies lediglich deaktiviere:
    https://github.com/symfony/webpack-e.../index.js#L403 und
    https://github.com/symfony/webpack-e...index.js#L1163

    Habt Ihr da Erfahrungen / Hinweise?

    B)
    Angeschaut habe ich mir auch https://github.com/heimrichhannot/contao-encore-bundle.
    Allerdings verstehe ich nur Bahnhof.
    Warum muß ich da zusätzlich zur "webpack.config.js" eine config.yml pflegen/bereitstellen -
    und wozu die "encore.bundles.js" dient erschließt sich mir leider auch nicht.
    Hat einer evtl. auch hierzu Anmerkungen/Vorgehensweisen parat ...?

    Wie gesagt würde ich A) bevorzugen und könnte eure Anregungen gebrauchen ...
    Danke
    Franko


    EDIT:
    Aktueller Status siehe https://community.contao.org/de/show...l=1#post504489
    Geändert von Franko (23.05.2019 um 15:29 Uhr)
    Carpe diem ...

  2. #2
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    So wie ich es verstanden habe gibt es ohne weiteres keine Möglichkeit versionierte Dateinamen ( inkl hash ) bei einem lokalen Workflow einzusetzen.
    Dazu müßte Contao/Erweiterung das Mapping via der "manifest.json"/"entrypoint.json" auflösen und dies dann in der js/css Ausgabe berücksichtigen bzw. über eigene insertags bereitstellen.
    Dies stellt obige Erweiterung u.a. zur Verfügung.

    Allerdings möchte ich "online" ungern komplette Bundles ( z.B. jQuery Plugins ) via composer installieren nur um dann deren minified versions heranzuziehen.
    Sicherlich bietet diese Vorgehensweise weitere Vorteile ( page specific features, ). In Contao könnte man dazu aber immer noch verschiedene Seitenlayouts heranziehen.
    Bleibt also wie immer, zum Glück, eine Abwegungssache.

    Persönlich würde ich daher den lokalen Workflow mit nicht versionierten Dateinamen favorisieren.
    Diese können dann in Contao ganz normal eingebunden werden.

    Allerdings muß man dann darauf achten das es bei den Dateinamen nicht zu Konflikten kommt.
    Normalerweise könnten in verschiedenen ( source ) Verzeichnissen identische Dateinamen ( z.B. Images ) verwendet werden.
    Über die Versionierung sind diese dann immer eindeutig ( werden alle im build path in ein Verzeichnis gelegt ).

    Ohne Versionierung muß man halt darauf achten das diese zuvor bereits immer eindeutig sind.
    Alternativ könnte man auch über "configureFilenames" die Dateinamen kontrollieren ( images: 'images/[path][name].[ext]' ) - s.:

    https://github.com/symfony/webpack-e...index.js#L1164
    https://github.com/symfony/webpack-encore/issues/136
    https://github.com/symfony/webpack-encore/issues/73
    Carpe diem ...

  3. #3
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    20.573
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Franko Beitrag anzeigen
    bzw. die Einbindung via "encore_entry_script_tags()" und "encore_entry_link_tags()" in Twig Templates ist ja so in Contao nicht gegeben.
    Moritz hat sich hier mit eigenen Twig Templates beholfen, wo nur diese Befehle drin stehen und lässt sie dann einfach per
    PHP-Code:
    <?= \Contao\System::getContainer()->get('twig')->render('…'?>
    im fe_page Template rendern. Bin mir jetzt aber nicht sicher, ob das zum Erfolg geführt hat .

    Am Contao Camp haben wir auch damit experimentiert, wir wir den Contao Core dazu bringen könnten, auch Twig Templates zu unterstützen. Vielleicht gibt es da dann ja mal etwas für Contao 4.8 oder 4.9
    Geändert von Spooky (21.05.2019 um 09:16 Uhr)

  4. #4
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    PHP-Code:
    <?= \Contao\System::getContainer()->get('twig')->render('…'?>
    Wo müßte das denn dann eingebunden werden? Im fe_page Template?
    Sorry - hast Du ja geschrieben ...
    Carpe diem ...

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    20.573
    User beschenken
    Wunschliste

    Standard

    Ja, also je nach dem im <head> und am Ende des <body> (denke ich).

  6. #6
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    Bitte noch einmal theoretisch zum mitschreiben:
    - Ich installiere via composer encore: composer require encore

    Wo müssen nun die .json Dateien liegen? Im contao "web" Verzeichnis oder darüber?

    - Ich erstelle mir im "templates" Verzeichnis entsprechende Twig Templates mit "encore_entry_script_tags()" bzw. "encore_entry_link_tags()"
    - Diese werden dann durch obige Angabe in der fe_page an den jeweiligen Stellen eingebunden
    Carpe diem ...

  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    20.573
    User beschenken
    Wunschliste

    Standard

    Ich kenne mich zuwenig mit Encore und Webpack aus, daher kann ich dir da nur bedingt weiterhelfen.

    Die Twig Templates funktionieren derzeit leider nicht im /templates Verzeichnis - könntest du aber mit
    Code:
    twig:
      default_path: '%kernel.project_dir%/templates'
    in der config.yml wieder verfügbar machen. Ansonsten müsstest du das Template in app/Resources/view ablegen.

  8. #8
    Contao-Fan Avatar von Ainschy
    Registriert seit
    24.06.2009.
    Ort
    Neuenburg am Rhein
    Beiträge
    501
    Partner-ID
    5666
    User beschenken
    Wunschliste

    Standard

    Sven Baumann @baumannsv arbeitet an einer Erweiterung für Contao zu Webpack und Encore, vllt. schließt du dich mit ihm mal kurz.

  9. #9
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    Zitat Zitat von Ainschy Beitrag anzeigen
    Sven Baumann @baumannsv arbeitet an einer Erweiterung für Contao zu Webpack und Encore, vllt. schließt du dich mit ihm mal kurz.
    Danke,
    ( als Nicht Entwickler und encore Neuling werde ich wahrscheinlich nichts Tolles beitragen können )
    Habe zur Zeit nur das gefunden: https://github.com/baumannsven/twig/...ntao/templates
    Carpe diem ...

  10. #10
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    Wie bereits erwähnt möchte ich eigentlich auf eine Erweiterung in diesem Zusammenhang verzichten können.

    Mein bisheriger lokaler Workflow mit npm scripts/node modulen macht was es soll. Dennoch ist es nie schlecht Neues auszuprobieren.

    An webpack-encore gefällt mir vor allem die vereinfachte Konfiguration gegenüber webpack und vor allem das url resolving gerade für scss. Bietet node-sass ja so nicht ( früher mußte man dazu compass heranziehen ). Zusammen mit export/require Möglichkeiten und postcss Integration, dazu die cross-platform Umsetzung - prima. Lokal die benötigten frameworks via npm installieren, einbinden und das Ergebnis dann für Contao bereitstellen. Mehr benötige ich eigentlich nicht.

    Weitere Tasks wie svgo/imagemin Optimierungen kann man prinzipiell einbinden. Allerdings würden die halt auch immer ausgeführt (nicht im watch Modus).
    Entweder man läßt dies dann weiterhin "außerhalb" von webpack-encore via npm script generieren oder man könnte das mit environment Variablen steuern: s.:

    https://github.com/symfony/webpack-encore/issues/349
    https://github.com/webpack/webpack/issues/2254
    https://github.com/symfony/webpack-encore/issues/567

    Hinsichtlich der Dateinamen Versionierung werde ich mal obige Anweisungen testen.
    Wenn das so funktioniert bräuchte man zumindest keine weitere Erweiterung in diesem Zusammenhang - naja bis auf encore selbst.

    An eure Herangehensweise weiterhin interessiert ...
    Carpe diem ...

  11. #11
    Contao-Nutzer Avatar von baumannsv
    Registriert seit
    28.01.2015.
    Beiträge
    150

    Standard

    Hey,

    es gibt ein Contao Bundle von mir contaoblackforest/contao-encore-bundle.
    Dieses wird bis Ende dieser Woche released.

    Dazu wird es eine Contao Encore Edition geben die auf der Managed Edition aufbaut.

    In dieser Edition wird es auch auch einen branch geben mit der Contao Demo, in der man sieht wie man das ganze benutzt bzw. die Sachen ersetzen kann.

    LG Sven Baumann

  12. #12
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    Danke,
    bin gespannt.
    Wenn Du uns hier dazu auf dem Laufenden halten kannst ...
    Carpe diem ...

  13. #13
    Contao-Nutzer Avatar von baumannsv
    Registriert seit
    28.01.2015.
    Beiträge
    150

    Standard

    Ja werde ich tun

  14. #14
    Contao-Nutzer Avatar von baumannsv
    Registriert seit
    28.01.2015.
    Beiträge
    150

    Standard

    Noch an kleiner Zusatz.

    Ich war am Wochenende auf dem Contao Camp. Dort habe ich es Leo gezeigt und der meinte das die richtig gut aussieht und er es auf jeden Fall ausprobieren wird wenn es fertig ist.

  15. #15
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    Hier noch ein paar Video/Screencast Tuts die mir den Einstieg erleichtert hatten:

    Video: Grundsätzliches über webpack:
    https://symfonycasts.com/screencast/javascript-webpack

    Video: Grundsätzliches zu webpack-encore ( zwar für eine ältere Version dennoch sehenswert ):
    https://symfonycasts.com/screencast/...-encore-legacy

    Video: Grundsätzliches zu webpack-encore ( Neuauflage zu oben ):
    https://symfonycasts.com/screencast/webpack-encore
    Carpe diem ...

  16. #16
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.390
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    BTW: Im Contao Core ist seit der 4.5 der {{asset::}} InsertTag und ein "$this->asset()"-Helper für Templates.
    Da nutzen wir auch die Symfony Asset-Komponente, sprich wenn du in der config.yml das Framework so konfigurierst, dass es die manifest.json-VersioningStrategy nimmt (https://symfony.com/doc/current/fron...ersioning.html), dann solltest du die eigenen Assets einfach einbinden können
    terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.

  17. #17
    Contao-Nutzer Avatar von baumannsv
    Registriert seit
    28.01.2015.
    Beiträge
    150

    Standard

    Ist mir schon klar. Wenn man die Dateien gesplittet hat muss da allerdings auch dafür sorgen das diese auch geladen werden. Bei meinem Bundle kann man im Seitenlayout dies komfortabel auswählen. Das funktioniert über den konfigurierten Entrypoint und den Typ des Assets (js/css)

  18. #18
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.390
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Dafür gibt's auch einen PR für den Core
    terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.

  19. #19
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    Zitat Zitat von Toflar Beitrag anzeigen
    BTW: Im Contao Core ist seit der 4.5 der {{asset::}} InsertTag und ein "$this->asset()"-Helper für Templates.
    Da nutzen wir auch die Symfony Asset-Komponente, sprich wenn du in der config.yml das Framework so konfigurierst, dass es die manifest.json-VersioningStrategy nimmt (https://symfony.com/doc/current/fron...ersioning.html), dann solltest du die eigenen Assets einfach einbinden können
    Also nicht in der LTS sondern in/ab der 4.7.x ?
    Könntest Du dies "config.yml das Framework so konfigurierst, dass es die manifest.json-VersioningStrategy nimmt" bitte näher ausführen ...
    Danke
    Carpe diem ...

  20. #20
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    Zitat Zitat von Toflar Beitrag anzeigen
    BTW: Im Contao Core ist seit der 4.5 der {{asset::}} InsertTag und ein "$this->asset()"-Helper für Templates.
    Ähm, finde dazu nichts in der Doku ... ?
    Evtl. hat auch hierzu jemand weitere Infos ...
    Danke
    Carpe diem ...

  21. #21
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    Zitat Zitat von Toflar Beitrag anzeigen
    Dafür gibt's auch einen PR für den Core
    @Toflar - Sorry - Unbedarft/Interessiert - Hast Du bitte den Link dazu?
    Danke
    Carpe diem ...

  22. #22
    Contao-Nutzer Avatar von baumannsv
    Registriert seit
    28.01.2015.
    Beiträge
    150

    Standard

    @Franco

    Hier ist das bundle von https://github.com/ContaoBlackForest.../release/1.0.0

    Richte alles ein wie es im Symfony Encore Bundle beschrieben ist.

    Die Einstellungen nimmst du im Seitenlayout vor.

  23. #23
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    Zitat Zitat von baumannsv Beitrag anzeigen
    @Franco
    Hier ist das bundle von https://github.com/ContaoBlackForest.../release/1.0.0
    Richte alles ein wie es im Symfony Encore Bundle beschrieben ist.
    Die Einstellungen nimmst du im Seitenlayout vor.
    Hi, versuche es gerade über den CM in einer 4.7.6 zu installieren.
    Habe als Version "1.0.0" angegeben und erhalte dann:
    The requested package contaoblackforest/contao-encore-bundle 1.0.0 exists as contaoblackforest/contao-encore-bundle[dev-master, 1.0.x-dev, dev-release/1.0.0] but these are rejected by your constraint.

    ??
    Danke
    Carpe diem ...

  24. #24
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    20.573
    User beschenken
    Wunschliste

    Standard

    Der Release wurde anscheinend wieder gelöscht. Du müsstest einen Branch installieren.

  25. #25
    Contao-Nutzer Avatar von baumannsv
    Registriert seit
    28.01.2015.
    Beiträge
    150

    Standard

    Das musst du so eintragen:

    "contaoblackforest/contao-encore-bundle": "dev-release/1.0.0 as 1.0.0"

  26. #26
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    Zitat Zitat von baumannsv Beitrag anzeigen
    Das musst du so eintragen:
    "contaoblackforest/contao-encore-bundle": "dev-release/1.0.0 as 1.0.0"
    Sorry for pushing: Mit "dev-release/1.0.0 as 1.0.0" erhalte ich dann im Anschluß:

    Code:
    In ScriptHandler.php line 89:
                                                                                   
      An error occurred while executing the "contao:install-web-dir" command:      
      In ArrayNode.php line 228:                                                   
                                                                                   
                                                                                   
        The child node "output_path" at path "webpack_encore" must be configured.
    Carpe diem ...

  27. #27
    Contao-Nutzer Avatar von baumannsv
    Registriert seit
    28.01.2015.
    Beiträge
    150

    Standard

    Du musst den output path konfigurieren.

    Siehe hier https://github.com/symfony/webpack-encore-bundle

    - - - Aktualisiert - - -

    Das machst du z.B.

    app/config/config.yml

  28. #28
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    Beside that:
    Ich habe das hier gelesen: https://github.com/contao/contao/pull/104

    Demnach sollte man in der config.yml das eintragen:

    Code:
    framework:
        assets:
            json_manifest_path: '%kernel.project_dir%/web/path/to/my.json'

    Ich denke das ist was Toflar mit "Da nutzen wir auch die Symfony Asset-Komponente, sprich wenn du in der config.yml das Framework so konfigurierst, dass es die manifest.json-VersioningStrategy nimmt "
    meinte ...

    Aber später schreibt da aschempp dann:

    Important:
    This has just become kinda obsolete/out of date with the new Encore update: https://symfony.com/blog/encore-0-21...ckencorebundle
    Verwirrt - würde es gerne verstehen ...
    Carpe diem ...

  29. #29
    Contao-Nutzer Avatar von baumannsv
    Registriert seit
    28.01.2015.
    Beiträge
    150

    Standard

    PHP-Code:
    webpack_encore:
        
    # The path where Encore is building the assets - i.e. Encore.setOutputPath()
        
    output_path'%kernel.project_dir%/web/build' 

    Bei dem genannten Pull Request ist das eine andere Art. Da wird ja von assets gesprochen und nicht von webpack encore.

    Bei meinem bundle wählt man anhand der entrypoints die dazugehörigen assets aus.
    Geändert von baumannsv (23.05.2019 um 10:01 Uhr)

  30. #30
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    Status:
    - config.yml mit obigen Angaben angelegt
    - Erweiterung mit Angabe "dev-release/1.0.0 as 1.0.0" via CM installiert

    Im CM hatte ich dann noch folgende Ausgabe:

    Code:
    RuntimeException: Unable to write config file to /shared/httpd/lts/contao-manager/composer-install.get.json in phar:///shared/httpd/lts/web/contao-manager.phar.php/vendor/terminal42/background-process/src/AbstractProcess.php:76
    Stack trace:
    #0 phar:///shared/httpd/lts/web/contao-manager.phar.php/vendor/terminal42/background-process/src/ProcessRunner.php(215): Terminal42\BackgroundProcess\AbstractProcess::writeConfig('/shared/httpd/l...', Array)
    #1 phar:///shared/httpd/lts/web/contao-manager.phar.php/vendor/terminal42/background-process/src/ProcessRunner.php(112): Terminal42\BackgroundProcess\ProcessRunner->saveConfig()
    #2 phar:///shared/httpd/lts/web/contao-manager.phar.php/vendor/terminal42/background-process/src/ProcessRunner.php(53): Terminal42\BackgroundProcess\ProcessRunner->wait(1)
    #3 phar:///shared/httpd/lts/web/contao-manager.phar.php/vendor/terminal42/background-process/src/Command/ProcessRunnerCommand.php(36): Terminal42\BackgroundProcess\ProcessRunner->run()
    #4 phar:///shared/httpd/lts/web/contao-manager.phar.php/vendor/symfony/console/Command/Command.php(255): Terminal42\BackgroundProcess\Command\ProcessRunnerCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #5 phar:///shared/httpd/lts/web/contao-manager.phar.php/vendor/symfony/console/Application.php(978): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #6 phar:///shared/httpd/lts/web/contao-manager.phar.php/vendor/symfony/console/Application.php(255): Symfony\Component\Console\Application->doRunCommand(Object(Terminal42\BackgroundProcess\Command\ProcessRunnerCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #7 phar:///shared/httpd/lts/web/contao-manager.phar.php/api/ApiApplication.php(76): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #8 phar:///shared/httpd/lts/web/contao-manager.phar.php/vendor/symfony/console/Application.php(148): Contao\ManagerApi\ApiApplication->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #9 phar:///shared/httpd/lts/web/contao-manager.phar.php/api/console(84): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput))
    #10 /shared/httpd/lts/web/contao-manager.phar.php(54): require('phar:///shared/...')
    #11 {main}
    # Process terminated with exit code 0
    # Result: OK
    - Datenbank aktualisiert
    - Im Backend unter Seitenlayout sehe ich dann "Encore aktivieren"

    Jetzt müßte ich also das Verzeichnis web/build zunächst befüllen ... - Nur Wie?

    Irgendwie komme ich durcheinander mit der Vorgehensweise von webpack-encore als symfony bundle (in Contao) und als "normale" Installation via Node/npm ...
    Carpe diem ...

  31. #31
    Contao-Nutzer Avatar von baumannsv
    Registriert seit
    28.01.2015.
    Beiträge
    150

    Standard

    Du musst natürlich auch dein webpack komplett einrichten wie du es im Screencast gesehen hast.

    In der Auswahl erscheinen die Optionen erst wenn du schonmal z.B. npm run build ausgeführt hast.

  32. #32
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    Zitat Zitat von baumannsv Beitrag anzeigen
    Du musst natürlich auch dein webpack komplett einrichten wie du es im Screencast gesehen hast.
    In der Auswahl erscheinen die Optionen erst wenn du schonmal z.B. npm run build ausgeführt hast.
    Zunächst: Danke für eure/Deine Geduld mit mir :-)
    Ich habe jetzt also lokal ( mit Docker/Devilbox ) meine Contao Installation und der Erweiterung vorliegen.
    Lokal installiere ich dann zusätzlich webpack-encore ( also wie gehabt mit node_modules etc.) und lasse darüber dann die Daten im jeweiligen build Verzeichnis generieren.
    Später - Online - brauche ich nur dieses build Verzeichnis aktuell halten ...

    Probiere ich dann mal ...
    Carpe diem ...

  33. #33
    Contao-Nutzer Avatar von baumannsv
    Registriert seit
    28.01.2015.
    Beiträge
    150

    Standard

    Genau so ist. Die Source Dateien brauchst du nicht zwingend auf deinem Live Server. Da reicht aus die kompilierten Dateien hochzuladen.

  34. #34
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    Ich wollte nicht pushen - und tue es dennoch :-)

    Ich möchte auch baumannsv Anstrengungen in keiner Weise schmälern sondern lediglich alle Möglichkeiten mit einer Contao 4.7.x in diesem Zusammenhang ausloten.
    Bitte um Verständnis.

    Kann ich jetzt in der config.yml folgenden Eintrag setzen ( oder nicht ):

    Code:
    framework:
      assets:
        json_manifest_path: '%kernel.project_dir%/web/path/to/manifest.json'
    Wenn das geht brauche ich theoretisch auch nicht explizit weitere Installationen e.g. die "symfony/webpack-encore-bundle". Im Grunde genommen ist es davon völlig unabhängig.
    Ich muß/könnte dann in Contao die entsprechenden Daten manuell einbinden über Toflars genannter Vorgehensweise via {{asset::}} InsertTag und ein "$this->asset() Template Helper Funktionen.

    Nur wie setze ich das konkret ein?
    Angenommen die folgende manifest.json ( Beispiel aus der symfony doku ) und diese wäre in config.yml referenziert:

    Code:
    {
        "build/app.js": "/build/app.123abc.js",
        "build/dashboard.css": "/build/dashboard.a4bf2d.css",
        "build/images/logo.png": "/build/images/logo.3eed42.png"
    }
    ???
    Danke

    (Klar - mit der Erweiterung ist die Einbindung eleganter - aber wie gesagt ... )
    Carpe diem ...

  35. #35
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard Webpack Encore

    Test Status:
    Hallo, habe jetzt folgendes ausprobiert jeweils mit Contao 4.7.6.

    Ausgangsbasis:
    Lokal webpack-encore installiert mit:
    Code:
    npm init -y
    npm install @symfony/webpack-encore --save-dev
    npx encore production
    Dabei habe ich lediglich die Beispiele aus https://symfony.com/doc/current/fron...tallation.html verwendet.
    In meinem "web/build" Verzeichniss befinden sich dann: entrypoints.json, manifest.json, runtime.747e415b.js, test.2d39ceba.js und test.55941eb4.css

    Mit Erweiterung:
    Mit der Erweiterung ( s. obige Installationsschritte ) kann ich dann bequem test.js und/oder test.css auswählen und zusätzlich deren Position bestimmen - siehe Anlage encore 0.png
    Im Frontend wird dann beispielsweise dies im Header ausgegeben:

    Code:
    <link rel="stylesheet" href="build/test.55941eb4.css">
    <script src="build/runtime.747e415b.js"></script>
    <script src="build/test.2d39ceba.js"></script>
    Ohne Erweiterung:
    Separate Contao Installation und in der config.yml folgendes eingetragen:

    Code:
    framework:
      assets:
        json_manifest_path: '%kernel.project_dir%/web/build/manifest.json'
    Habe dann noch den Cache gelöscht - über CM o. Shell.
    Dann im Seitenlayout z.B. unter "Zusätzliche -Tags" folgendes:

    Code:
    <script src="{{asset::build/runtime.js}}"></script>
    <script src="{{asset::build/test.js}}"></script>
    <link rel="stylesheet" href="{{asset::build/test.css}}">
    Ergebnis im Frontend:
    Code:
    <script src="build/runtime.747e415b.js"></script>
    <script src="build/test.2d39ceba.js"></script>
    <link rel="stylesheet" href="build/test.55941eb4.css">
    Toflars Angaben können also so in der 4.7.6 umgesetzt werden ( wohl dann nicht in der Contao LTS ).
    Hierbei muß man sich dann halt selbst um die jeweilige, korrekte Reihenfolge kümmern - (vor allem mit https://symfony.com/doc/current/fron...it-chunks.html ) mit der Erweiterung ist es bequemer.

    Aber beide Möglichkeiten sind denkbar ...
    Geändert von Franko (24.05.2019 um 08:23 Uhr)
    Carpe diem ...

  36. #36
    Contao-Nutzer Avatar von baumannsv
    Registriert seit
    28.01.2015.
    Beiträge
    150

    Standard

    @Franko

    Danke das du es doch mit meinem Bundle ausprobiert hast. Das die Einbindung mit dem Bundle leichter ist hatte ich ja erwähnt.

    Nur zur Info. Habe die ersten phpunit Tests geschrieben. Wenn es so voran geht kann ich das erste Release morgen fertig machen.
    Geändert von baumannsv (23.05.2019 um 15:07 Uhr)

  37. #37
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    @baumannsv - Hört sich gut an,
    ich habe mich über mich selbst geärgert, da ich die beiden hier genannten, unterschiedlichen Herangehensweisen nicht atoc kapiert hatte
    Unabhängig davon werde ich mir nochmals die Screencasts genauer anschauen besonders hinsichtlich ".enableSingleRuntimeChunk()" und deren Auswirkungen ...

    Evtl. könntest Du dies und die weiteren Vorteile Deiner Erweiterung in der readme etwas genauer dokumentieren -
    Auch das man den config.yml Eintrag setzen muß bevor man die Erweiterung installiert ...

    Auf jeden Fall:
    Vielen Dank fürs Gelernte und eure Infos ...
    Carpe diem ...

  38. #38
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    Hallo,
    ich wollte auch noch einmal Spooky's Hinweise bez. Twig Templates ausprobieren.

    Also entweder ein Twig Template unter "app/Resource/views" anlegen oder in der "app/config.yml" den Pfad setzen:
    Code:
    twig:
      default_path: '%kernel.project_dir%/templates'
    Das Twig Template dann im "templates" Verzeichnis anlegen und Cache löschen.

    Ich hatte die Erweiterung "ContaoBlackForest/contao-encore-bundle" noch installiert, welches u.a. das aktuelle "symfony/webpack-encore-bundle" beinhaltet.
    Daher:

    config.yml
    Code:
    webpack_encore:
      output_path: '%kernel.project_dir%/web/build'
    twig:
      default_path: '%kernel.project_dir%/templates'
    templates/encore_link_css.twig ( "test" ist der Entrypoint in der "webpack.config.js" )
    Code:
    {{ encore_entry_link_tags('test') }}
    templates/encore_link_js.twig ( "test" ist der Entrypoint in der "webpack.config.js" )
    Code:
    {{ encore_entry_script_tags('test') }}
    In der "fe_page.html5" dann im Header Bereich:
    Code:
    ...
    <?= \Contao\System::getContainer()->get('twig')->render('encore_link_css.twig') ?>              	
    <?= \Contao\System::getContainer()->get('twig')->render('encore_link_js.twig') ?>              	
    ...
    Das funktioniert auch - Aber :-(

    Ich dachte mir jetzt probiere ich es wieder ohne Erweiterung. Also "ContaoBlackForest/contao-encore-bundle" deinstalliert.
    Jetzt will ich über den Composer nur "symfony/webpack-encore-bundle" installieren - erhalte dann aber:

    There is no extension able to load the configuration for "webpack_encore" (
    in /shared/httpd/lts/app/config/config.yml). Looked for namespace "webpack_
    encore", found "knp_menu", "knp_time", "scheb_two_factor", "header_replay",
    "cmf_routing", "framework", "security", "twig", "monolog", "swiftmailer",
    "doctrine", "doctrine_cache", "lexik_maintenance", "nelmio_cors", "nelmio_s
    ecurity", "fos_http_cache", "contao_manager", "contao", "contao_faq", "cont
    ao_installation", "contao_news", "contao_calendar"
    Wie kann ich das Symfony Bundle installieren und entsprechend die Konfiguration für den "output_path" s.: https://github.com/symfony/webpack-e...#configuration mitgeben?
    Geändert von Franko (27.05.2019 um 16:14 Uhr)
    Carpe diem ...

  39. #39
    Contao-Nutzer Avatar von baumannsv
    Registriert seit
    28.01.2015.
    Beiträge
    150

    Standard

    Ja weil das Encore Bundle nicht geladen wird. Dieses macht mein Bundle.

    VG Sven

  40. #40
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    884
    Partner-ID
    6122

    Standard

    Zitat Zitat von baumannsv Beitrag anzeigen
    Ja weil das Encore Bundle nicht geladen wird. Dieses macht mein Bundle.
    VG Sven
    Hi, Verstanden :-)
    Also dann ...
    Dank Dir
    Carpe diem ...

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •