Skip to content

Instantly share code, notes, and snippets.

@MadeMyDay
Last active August 29, 2015 13:57
Show Gist options
  • Save MadeMyDay/9617254 to your computer and use it in GitHub Desktop.
Save MadeMyDay/9617254 to your computer and use it in GitHub Desktop.
Wie macht man ein sinnvolles Deployment, wenn man primär auf normalen Webhosting-Angeboten arbeitet?

Meine Vorgehensweise bisher:

Ich nutzte immer Livereload bzw. Prepros bzw. Codekit. Ob lokal oder entfernt war egal, der Kunden-Webspace wurde als Laufwerk per Transmit eingebunden und das hat relativ gut funktioniert (also Änderungen an z.B. Stylus-Dateien wurden processed, .css wurde geschrieben, Browser hat sich automatisch aktualisiert bzw. den neuen Stand angezeigt).

Gulp

Jetzt habe ich gulp mal ausprobiert (hätte auch grunt sein können), finde ich natürlich super, will ja auch ein cooles Kid sein. Aber es macht eben auch mehr als Prepros bzw. ich habe mehr Kontrolle. Soweit so gut. Die Frage ist, wie kann ich das bewerkstellingen, wenn mein Workflow so aussieht:

  1. Entwicklung Prototyp lokal (eigentlich lieber auch gleich auf eigenem/Kundenwebspace, der kein node hat).
  2. Aus diesem Prototypen werden nach Abnahme Templates für das CMS. Zu diesem Zeitpunkt liegt das Projekt definitiv "entfernt". Der Kunde (oder auch ich) pflegen schon Inhalte ins CMS ein, weitere Templates werden mit diesen Inhalten erstellt, quasi "live"auf dem Server. Ich sehe hier keine Möglichkeit, lokal zu entwickeln und etwas zu deployen, da die zugrunde liegenden Daten entfernt sind. Ich müsste also entweder den Stand des CMS auf lokal syncen, dann lokal entwickeln und wieder deployen oder ich verabschiede mich generell von dem Gedanken, grunt/gulp etc. in meinen Entwicklungsprozess zu integrieren.

Was ich gerne hätte:

Im Prinzip die Möglichkeit, den entfernten (Template-)Ordner wie bisher lokal einzubinden und die gulp-tasks darauf ausführen können und irgendwie die Vorschau/den Reload zu triggern. Funktioniert aber nicht wie gehofft, habe ich ausprobiert. Node-Module lassen sich zwar teilweise auch auf diesem Netzlaufwerk installieren, bricht aber irgendwann mit Fehlern ab, vermutlich ist einfach die Schreib/Lesegeschwindigkeit zu niedrig.

Eventuell geht irgendwas in Richtung Webspace wie bisher als Laufwerk einbinden und den betreffenden Ordner rsyncen? Oder irgendwie symlinken? Ich weiß doch auch nicht ;-)

@yellowled
Copy link

Ich versuch's nochmal, obwohl wir gestern per Skype nicht weit gekommen sind. Vergiss erstmal LiveReload, das ist ggf. komplizierter, schätze ich (weiß ich nicht, weil ich immer nur LiveReload via Grunt lokal benutze).

Im Grunde geht es doch sehr wahrscheinlich darum, Template-Dateien zu erzeugen – Stylesheets aus Präprozessor-Dateien zu kompilieren, Javascripte zu kombinieren, den ganzen Kladderadatsch zu minifizieren, eventuell ein paar Grafiken zu optimieren etc. pp. und das Ganze dann samt PHP-Templates an den richtigen Ort auf dem entfernten Server zu bringen.

Wenn Du nun den entfernten Server als Netzlaufwerk (oder wie auch immer das in Transmit genau heißt) eingebunden hast, ist also der Ort, wo die Dateien hin sollen, letztlich nur ein lokales Verzeichnis. Du musst ja – zumindest ist das in Grunt so, aber ich nehme an, in Gulp auch – Dein Build-Skript nicht in diesem Verzeichnis laufen lassen, Du musst es nur in dieses Verzeichnis ausgeben lassen, also dafür sorgen, dass die erzeugten Template-Dateien dort landen. Die Quelldateien samt Build-Skript, npm-Module etc. pp. können in einem ganz anderen Verzeichnis liegen … denke ich. Probiert habe ich das natürlich auch noch nie. :)

@fhemberger
Copy link

Zunächst: Livereload gibt es auch als grunt/gulp-funktion (z.b. in grunt-connect). Kommt dann ohne App/Browserplugin aus.

Du könntest also den Template-Ordner weiter lokal einbinden, bei Änderungen wird lokal bei dir der grunt/gulp-task ausgeführt, der die Änderungen wieder in den eingebundenen Ordner schreibt. Danach muss man den live-reload nur dazu bekommen die remote-website neu zu laden.

Würde sowas helfen?
https://github.com/avevlad/gulp-connect#connect--livereload--open--stylus

Du müssest dann wahrscheinlich nur die Config anpassen:

host: 'www.deine-seite.de',
port: 80,

Hoffe, ich habe dich richtig verstanden. ;)

@MadeMyDay
Copy link
Author

Danke Ihr zwei. Das ist doch schonmal eine Idee. Die Dateien werden in das eingebundene Laufwerk kopiert. Das mit dem Livereload ist so ne Sache. Das was Du da verlinkt hast, Frederic, habe ich schonmal probiert, lief bei mir auf dem Mac nicht ("chrome" in allen Variationen wurde nicht gefunden). Habe jetzt gulp-livereload, das super funzt. Da das ein Chrome-Plugin ist, könnte/sollte es eigentlich auch auf diese Änderung der Live-Site "hören".

@matthias: Jau, nur ist die Frage, wo der Reload ins Spiel kommt. Werde es probieren.

@fhemberger
Copy link

Mit Gulp hab ich das noch nicht ausprobiert (klappt 'Google Chrome' bzw. 'Google\ Chrome' nicht?).
Für Grunt gibts sonst noch https://github.com/gruntjs/grunt-contrib-connect, falls das ne Alternative wäre.

@MadeMyDay
Copy link
Author

Nicht sicher ob ich die "escapte" Version probiert habe. "Google Chrome" ging nicht. Will try, thx!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment