2016-05-12 104 views
0

這是我一飲而盡文件如何使用gulp-data以不同語言獲取輸出html?

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')) 
}); 

這可能是數據data.json

{ 
    "Page title": "hello English" 
} 

我想有./dest文件夾home.htmlhome_de.htmlhome.html兩個文件應該有英文內容和JSON文件home_de.html應該有德文內容。我不想爲其他語言使用不同的源HTML模板文件。

內容到數據文件(.json)將被手動添加

回答

1

咕嘟咕嘟只是圍繞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)); 
     }); 
    }); 
}); 
+0

folder/myfiles/do,它會有什麼? –

+0

保持語言json文件的約定是什麼? –

+0

用戶偏好問題。只需在en.json和de.json之類的語言簡碼之後命名即可。就你如何構造物體而言,這就是你所有的人。快樂的編碼!^_^ – Popcorn245

相關問題