Как получить вывод html на другом языке, используя gulp-data?
Это мой глоток
var gulp = require('gulp');
var posthtml = require('gulp-posthtml');
var mjml = require('gulp-mjml');
var nunjucksRender = require('gulp-nunjucks-render');
var data = require('gulp-data');
gulp.task('html', function() {
var plugins = [
require('posthtml-lorem')(),
];
// Gets .html and .nunjucks files in pages
return gulp.src('./pages/**/*.+(html|nunjucks)')
// Adding data to Nunjucks
.pipe(data(function() {
return require('./data.json')
}))
// Renders template with nunjucks
.pipe(nunjucksRender({
path: ['./helpers/']
}))
.pipe(posthtml(plugins))
.pipe(mjml())
// output files in app folder
.pipe(gulp.dest('./dest'))
});
Это может быть файл JSON для данных data.json
{
"Page title": "hello English"
}
Я хочу иметь два файла в ./dest
папка home.html
а также home_de.html
А также home.html
должен иметь контент на английском и home_de.html
должен иметь контент на немецком языке. Я не хочу иметь другой исходный файл шаблона HTML для другого языка.
Содержимое в файл данных (.json
) будет добавлено вручную
1 ответ
Решение
Gulp - это простая оболочка для node.js. По запросу fs вы можете получить доступ к файловой системе. Затем вы можете перебирать файлы данных на разных языках и отображать HTML для каждого из них. Это должно сработать, однако это не проверено, но вы должны понять суть.
var fs = require('fs');
var gulp = require('gulp');
var posthtml = require('gulp-posthtml');
var mjml = require('gulp-mjml');
var nunjucksRender = require('gulp-nunjucks-render');
var data = require('gulp-data');
gulp.task('html', function() {
var plugins = [
require('posthtml-lorem')(),
];
fs.readdir('./languages/',function(err,files){
if(err) throw err;
files.forEach(function(file){
var language = file.split('.')[0];
// Gets .html and .nunjucks files in pages
return gulp.src('./pages/**/*.+(html|nunjucks)')
// Adding data to Nunjucks
.pipe(data(function() {
return require('./languages/' + language + '.json')
}))
// Renders template with nunjucks
.pipe(nunjucksRender({
path: ['./helpers/']
}))
.pipe(posthtml(plugins))
.pipe(mjml())
// output files in app folder
.pipe(gulp.dest('./dest/' + language));
});
});
});