2016-07-30 17 views
0

Ich entwickle eine Bibliothek, die eine Ressource-Datei enthält, insbesondere eine E-Mail-Vorlage. Die Datei befindet sich unter <project_root>/templates/email.html.Verteilen von Ressourcen mit Golang

Ich habe eine harte Zeit Referenzierung dieser Datei aus den .go Quellen, da es schwierig ist, einen relativen Pfad aufzulösen. Bis jetzt sind die Optionen, die ich gefunden sind:

  • Verwendung $GOPATH: Das kommt mit dem Problem, dass einige Abhängigkeit managemente Tools $GOPATH neu definieren können und brechen

  • eine variable benutzerdefinierte env benutzen funktioniert, aber es zwingt den Benutzer, der lib, um die Variable hinzuzufügen.

  • Inline die Vorlage auf einer Zeichenfolge: es ist hässlich.

Hat jemand eine bessere Alternative? Ich würde lieber nicht 3rd-Party-Bibliotheken nur dafür verwenden, aber wenn Sie wissen, dass man frei es darauf hinweisen kann, kann ich die Quellen lesen und sehen, wie sie es tun.

Dank

+2

Betrachten Sie die E-Mail-Template-Datei direkt in Ihr binäre Einbetten: siehe [github.com/jteeuwen/go-bindata](https://github.com/jteeuwen/go-bindata) – Mark

+2

Inlining Ressourcen ist IMHO Der beste Weg, wenn Sie eine Go-Bibliothek entwickeln. Auf diese Weise sind Ressourcen vollständig transparent. Das Einbetten der Vorlage in die Binärdatei wirkt sich direkt auf die Benutzer aus, die Ihre Bibliothek verwenden und sie kompilieren müssen. – jnmoal

Antwort

1

Die häufigste Technik ist es, die Ressourcen zu sorgen, damit alles, was Sie tun müssen, ist die binäre zu verteilen.

This list von Go-Bibliotheken hat eine Liste von Bibliotheken, die Ressource Einbettung tun:

  • esc - Bindet Dateien in Go-Programme und bietet http.FileSystem Schnittstellen zu ihnen.
  • fileb0x - Einfaches Tool zum Einbetten von Dateien mit Fokus auf "Anpassung" und Benutzerfreundlichkeit.
  • go-bindata - Paket, das jede Datei in einen managbaren Quellcode umwandelt.
  • go-embed - Code generiert gehen Ressourcendateien in Ihrer Bibliothek oder ausführbare
  • go-resources einzubetten - Unfancy Ressourcen mit Go einzubetten.
  • go.rice - go.rice ist ein Go-Paket, das die Arbeit mit Ressourcen wie HTML, JS, CSS, Bilder und Vorlagen sehr einfach macht.
  • statics - Bettet statische Ressourcen in go-Dateien für einzelne binäre Kompilierung + arbeitet mit http.FileSystem + symlinks.
  • vfsgen - Erzeugt eine Datei vfsdata.go, die das angegebene virtuelle Dateisystem statisch implementiert.