2016-07-30 2 views
0

私は、リソースファイル、特に電子メールテンプレートを含むライブラリを開発しています。ファイルは<project_root>/templates/email.htmlです。ゴランでリソースを配布する

.goソースからこのファイルを参照するのは苦労しています。相対パスを解決するのは難しいためです。これまでのところ私が見つけたオプションは次のとおりです。

  • 使用$GOPATH:これはいくつかの依存関係managementeツールは$GOPATHを再定義し、カスタムのenv変数を使用

  • を壊す可能性がある問題が付属しています。作品が、それはユーザーを強制的に変数を追加するためのlibの値。

  • 文字列のテンプレート:それは醜いです。

もっと良い選択肢がありますか?私はむしろこれのためにサードパーティ製のライブラリを使用したくないですが、もしあなたがそれを指摘する自由を感じているので、私はソースを読んで、彼らがそれをやる方法を見ることができます。

おかげ

+2

は直接バイナリに電子メールテンプレートファイルを埋め込む考えてみましょう:[github.com/jteeuwen/go-bindata](https://github.com/jteeuwen/go-bindata) – Mark

+2

インライン化のリソースを参照してくださいすることは私見ですGoライブラリを開発するときには最良の方法です。このように、リソースは完全に透過的です。テンプレートをバイナリに埋め込むことは、あなたのライブラリを使用する人に直接影響を与え、コンパイルする必要があります。 – jnmoal

答えて

1

は、最も一般的な技術は、リソースを埋め込むことがあるので、あなたがしなければならないすべては、バイナリを配布しています。囲碁ライブラリの

This listリソースの埋め込みを行うライブラリのリストを持っています

  • esc - 囲碁プログラムにファイルを埋め込み、それらにhttp.FileSystemのインターフェースを提供します。
  • fileb0x - 「カスタマイズ」と使いやすさに重点を置いてファイルを埋め込む簡単なツールです。
  • go-bindata - 任意のファイルをmanagable Goソースコードに変換するパッケージ。
  • go-embedは - ゴーで埋め込むUnfancyリソース - あなたのライブラリや実行可能
  • go-resourcesにリソースファイルを埋め込むためのコードを生成します行きます。
  • go.rice - go.riceは、html、js、css、画像 、テンプレートなどのリソースを使用して作業するGoパッケージです。
  • statics - 静的リソースを単一バイナリコンパイルのためのファイルに埋め込み、+ http.FileSystem + symlinksで動作します。
  • vfsgen - 指定された仮想ファイルシステム を静的に実装するvfsdata.goファイルを生成します。