У меня есть несколько пакетов Go, которые используют quicktemplate .Quicktemplate компилирует файлы шаблонов с расширением .qtpl
в файлы Go с расширением .qtpl.go
с помощью приложения qtc
CLI.В версиях Go до 1.11 наличие .qtpl
файлов в пакете Go не было проблемой, поскольку файлы .qtpl
игнорировались бы компилятором.Однако Go 1.11, по-видимому, обрабатывает .qtpl
файлов, что приводит к ошибкам компиляции.
Пример, который работает с Go 1.3-1.10, но не 1.11, доступен здесь и описан ниже.
Каталог пакета содержит:
timeseries_page.qtpl
файл шаблона timeseries_page.qtpl.go
файл шаблона, скомпилированный в Go с использованием qtc
Раньше толькофайл, оканчивающийся на .go
, будет скомпилирован, и все будет нормально.В версии 1.11 возникает ошибка при синтаксическом анализе файла .qtpl
, который не предназначен для компиляции Go.
Вот минимальная программа Go, использующая этот пакет, которая не будет встроена в Go 1.11, но работать с 1.10.
package main
import (
"github.com/grokify/gocharts/charts/c3"
)
func main() {
_ = c3.C3Chart{}
}
Вот ошибка, показывающая файл timeseries_page.qtpl
:
$ go build main.go
# github.com/grokify/gocharts/charts/c3
timeseries_page.qtpl:42: undefined: TimeseriesHTML
timeseries_page.qtpl:48: undefined: TimeseriesHTML
TimeseriesHTML
- это функция, которая вызывается в этом файле шаблона и создаетсядругой файл быстрого шаблона в файле timeseries_js.qtpl.go
.
Тот же результат и выходные данные встречаются со следующим:
$ go run main.go
$ go test main.go
Есть ли способ вернутьпредыдущее поведение Go или игнорирование .qtpl
файлов во время сборки?