2016-07-30 8 views
0

Я разрабатываю библиотеку, которая содержит файл ресурсов, в частности шаблон электронной почты. Файл находится на <project_root>/templates/email.html.Распределение ресурсов с помощью golang

Мне очень сложно ссылаться на этот файл из источников .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 библиотек Go имеет список библиотек, которые делают вложение ресурсов:

  • esc - встраивает файлы в программы Go и обеспечивает http.FileSystem интерфейсы к ним.
  • fileb0x - Простой инструмент для встраивания файлов в работу с упором на «настройку» и легкость в использовании.
  • go-bindata - Пакет, который преобразует любой файл в управляемый исходный код Go.
  • go-embed - Формирует идти код, чтобы встроить файлы ресурсов в библиотеку или исполняемый файл
  • go-resources - Unfancy ресурсов вложения с Go.
  • go.rice - go.rice - это пакет Go, который позволяет работать с ресурсами, такими как html, js, css, изображениями и шаблонами очень легко.
  • statics - Вставляет статические ресурсы в файлы go для одной бинарной компиляции + работает с http.FileSystem + символическими ссылками.
  • vfsgen - Создает файл vfsdata.go, который статически реализует данную виртуальную файловую систему .