Как заставить шаблоны усов работать в бранче
Я хочу использовать шаблоны усов с Brunch. Это мой файл config.coffee:
{languages, plugins} = require 'brunch-extensions'
# Make config loadable via require() for brunch.
exports.config =
# Available plugins:
# * AssetsPlugin: copy `app/assets` contents to `build/`
plugins: [plugins.AssetsPlugin]
# Contains a list of output filenames that your application would generate.
# Format:
#
# 'filename':
# languages:
# 'regExp, with which input files will be matched': language class
# order:
# before: [files, that would be loaded before anything else]
# after: [files, that would be loaded after anything else]
#
files:
'scripts/app.js':
languages:
'\.js$': languages.JavaScriptLanguage
'\.coffee$': languages.CoffeeScriptLanguage
'\.eco$': languages.EcoLanguage
'\.mustache$': languages.HoganLanguage
order:
before: [
'vendor/scripts/console-helper.js'
'vendor/scripts/jquery-1.7.js'
'vendor/scripts/underscore-1.1.7.js'
'vendor/scripts/backbone-0.5.3.js'
]
'styles/app.css':
languages:
'\.css$': languages.CSSLanguage
'\.styl$': languages.StylusLanguage
order:
before: ['vendor/styles/normalize.css']
after: ['vendor/styles/helpers.css']
Но я получил следующую ошибку при запуске brunch watch
:
[17:27:45]: [Brunch]: cannot parse config entry
config.files['scripts/app.js'].languages['.mustache$']: TypeError: undefined is not a function.
1 ответ
В самом деле, похоже, что в бранч-расширениях 0.2.2 нет поддержки усов. То, что вы можете сделать, это установить расширения бранча прямо из главной ветки:
npm install https://github.com/brunch/brunch-extensions/tarball/master
Или вы можете добавить свой собственный HoganLanguage
из их github:
hogan = require 'hogan.js'
{BaseLanguage} = require './base'
# Requires Hogan 1.0.4
#
# Example:
# $(@el).html(template.render name: "mdp", city: "SF")
class exports.HoganLanguage extends BaseLanguage
compile: (path, callback) ->
@readFile path, (error, data) =>
return callback error if error?
try
content = hogan.compile data, asString: yes
callback null, "exports.render = function(data) {
var t = new Hogan.Template();
t.r = #{content};
return t.render(data);
}"
catch error
callback error
Это должно работать нормально, если вы просто установите hogan.js
и изменить на {BaseLanguage} = require 'brunch-extensions/lib/languages/base'
выше.