Я предварительно скомбинировал свои шаблоны в JS с помощью gulp-handlebars, но у меня возникли проблемы с получением пользовательских помощников руля также для предварительной компиляции. Кто-нибудь знает, есть ли какая-либо поддержка/способ прекомпиляции пользовательских вспомогательных методов?Как перекомпилировать помощников gulp-handlebars?
ответ
Я заметил, что руль-руль может использовать определенную рулевую библиотеку, по существу переопределяя ее по умолчанию. Итак, просто создав свой собственный модуль и зарегистрировав некоторых помощников, и подав его на вызов рулей, все работает локально.
// helpers.js
var handlebars = require('handlebars');
handlebars.registerHelper('upper', function(str){
return str.toUpperCase();
});
module.exports = handlebars;
А потом в gulpfile (что-то вроде этого):
var handlebars = require('./src/js/helpers.js');
gulp.task('handlebars', function(){
gulp.src('src/html/*.html')
.pipe(gulp_handlebars({handlebars: handlebars})) // override library here
});
Если вы используете Browserify и необязательно watchify и нужен выход, чтобы быть модулем стиля CommonJS, проглатывать-defineModule будет использовать a require («Ручки») в скомпилированном файле шаблона. Это отменяет любые зарегистрированные помощники, которые вы передали в пользовательскую библиотеку gulp-handlebars (см. Выше). Ниже приведен пример выходного файла, мы не хотим:
// template.js
var Handlebars = require("handlebars");
module.exports = Handlebars.template({"compiler":[7,">= 4.0.0"]...
1: Чтобы это исправить, создайте файл helpers.js, который требует библиотеки Рулей, добавляет помощник, а затем экспортирует библиотеку , Использование Глоток-defineModule требует возможности пройти в библиотеке руля с помощниками, как так:
.pipe(defineModule('node', {
require: {
Handlebars: '../helpers'
}
})
)
это будет производить:
// template.js
var Handlebars = require("../helpers");
module.exports = Handlebars.template({...
Обратите внимание, что относительный путь будет от выходного файла, и быть осторожными на prod, где путь к файлу может измениться.
2: Другой способ - использовать gulp-wrap для определения модуля точно так, как вы хотите. Что-то вроде:
.pipe(wrap('module.exports = function(Handlebars) {return Handlebars.template(<%= contents %>) }'))
затем в главном-ЯШ:
var Handlebars = require('./helpers');
var template = require('./template)(Handlebars);
- 1. Как перекомпилировать декомпилированный swf?
- 2. Как перекомпилировать nginx
- 3. как перекомпилировать проект django
- 4. Как перекомпилировать переменные.
- 5. Как заставить JSP перекомпилировать
- 6. Как перекомпилировать Ubuntu Toolchain?
- 7. Как создать помощников исключения?
- 8. Как зарегистрировать помощников Handlebars?
- 9. Замена html-помощников с помощью тегов-помощников
- 10. Как заставить Jinja2 шаблоны перекомпилировать?
- 11. Как перекомпилировать существующее приложение linux
- 12. Как перекомпилировать скрипты в JS
- 13. Как перекомпилировать виртуальные пакеты Chocolatey?
- 14. Как перекомпилировать ffmpeg в Ubuntu
- 15. Как перекомпилировать PHP7 с Pthreads
- 16. Как заставить MinGW перекомпилировать everyhing
- 17. Как перекомпилировать рубин с RVM?
- 18. Как перестроить или перекомпилировать библиотеки?
- 19. Как перекомпилировать php на ubuntu?
- 20. Как перекомпилировать Ui_MainWindow, сгенерированный Qt
- 21. Как перекомпилировать WinSCP без Finalizer
- 22. Как перекомпилировать исходный код GHDL
- 23. как перекомпилировать netcat с опциями?
- 24. Как перекомпилировать с -Xlint: unchecked?
- 25. Как использовать помощников в грабли?
- 26. Как проверить помощников в Rails?
- 27. Как использовать помощников в грабли?
- 28. Как включить помощников в smarty?
- 29. Как получить помощников в Hogan.js
- 30. Как контролировать порядок пересчета помощников
ли эту работу для вас? –
Yup. Несколько вещей пришлось изменить в среде prod, например, копировать файл helpers.js, но да, это действительно сработало. – puopg
Спасибо за полезный ответ! Я использовал другой набор модулей и даже не должен был переопределять библиотеку - сама операция требует всего. Также: вы должны пометить свой собственный ответ как правильный, это классно по стандартам Stackoverflow. – Paracetamol