Gulp: заменить переменные в файле HTML на основе имени файла
Наш проект использует Gulp. Теперь у меня есть требование: у нас есть несколько HTML-файлов на уровне страницы, скажем, login.html
а также my.html
, Внутри этих оригинальных HTML-файлов есть переменная {{PAGE_TITLE}}
, который должен быть заменен (на Gulp
) быть "Login to System"
а также "My Account"
соответственно. Вот мой текущий сценарий:
gulp.task('pages', ['clean:tmp'], function () {
var pageTitle = '';
return gulp.src('/my/source/html/**/*.html')
.pipe(tap(function (file, t) {
pageTitle = /index.html$/.test(file.path) ? 'Login to System' : 'My Account';
}))
.pipe(replace(/{{PAGE_TITLE}}/g, pageTitle))
.pipe(gulp.dest('/my/dest/'));
});
Получается переменная pageTitle
никогда не устанавливается перед replace
, Я искал документацию gulp-tap
в течение сотен раз, но я до сих пор не знаю, как заставить это работать. Пожалуйста, помогите, спасибо.
Этот пост: Модифицируйте файл на месте (тот же адрес), используя Gulp.js, и шаблон глобализации пытается добиться того же эффекта, но он привел к какому-то другому решению.
1 ответ
Я разобрался с решением следующим образом:
gulp.task('pages', ['clean:tmp'], function () {
function replaceDynamicVariables(file) {
var pageTitle = /login.html$/.test(file.path) ? 'Login to System' : 'My Account';
file.contents = new Buffer(String(file.contents)
.replace(/{{PAGE_TITLE}}/, pageTitle)
);
}
return gulp.src('/my/source/html/**/*.html')
.pipe(tap(replaceDynamicVariables))
.pipe(gulp.dest('/my/dest/'));
});