Я использую Lee Munro's grunt-email-workflow для создания набора шаблонов электронной почты для фреймворка PHP, который не имеет механизма шаблона, то есть: он использует необработанные php-переменные <?= $firstname; ?>
и т. Д., В шаблоны.Grunt-Replace для скомпилированных шаблонов электронной почты
Все шло хорошо, пока я не попытался реализовать эти переменные в источниках электронной почты, тогда я узнал, что assemble
дросселирует и выдает ошибки в любое время, когда сталкивается с переменной.
gruntfile
для этого проекта уже grunt-replace
так что моя мысль была сделать заменить на текст, который не будет разобрано handlebars
как ## item ##
и превратить его в фигурные скобки {{ item }}
, то я могу использовать Twig на PHP приложение для разбора PHP.
Моя проблема Я не могу разрешить replacement
часть grunt-replace
.
Я нашел this article, который делает что-то похожее на то, что я хочу, но эта функция замены не будет работать для этого.
До сих пор у меня есть это:
replace: {
dist: {
options: {
usePrefix: false,
patterns: [
{
match: /\##[^##]*\##/g,
replacement: ???????
}
]
},
files: {
expand: true,
flatten: true,
src: ['<%= paths.dist %>/**/*.html'],
dest: '<%= paths.dist %>/'
},
}
}
UPDATE:
После некоторых дополнительных попыток я это:
replace: {
dist: {
options: {
usePrefix: false,
patterns: [
{
match: /\##[^##]*\##/g,
replacement: '{{ $1 }}'
}
]
},
files: [
{
expand: true,
flatten: true,
src: ['<%= paths.dist %>/front/*.html'],
dest: '<%= paths.dist %>/front/'
},
{
expand: true,
flatten: true,
src: ['<%= paths.dist %>/back/*.html'],
dest: '<%= paths.dist %>/back/'
}
]
}
}
В моих скомпилированных шаблонов ## firstname ##
теперь заменен {{ $1 }}
Как получить значение содержимого в совпадающих тегах для замены?
Try 'матч:/## ([^ #] * (?: # (?! #) [^ #] *) *) ##/g' или '/ ## ([\ s \ S] *?) ##/g'. –
Это трюк, спасибо! –