如何使用 gulp-data 以不同的语言获得输出 html?
How to get output html in different language using gulp-data?
这是我的 gulp 文件
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
) 的内容
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));
});
});
});
这是我的 gulp 文件
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
) 的内容
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));
});
});
});