JavaScript - 2019-08-14

gulp-ejsでjsonを読み込む方法

meta情報の管理や商品・店舗情報などのページ量産など様々な用途で使用できるので便利です。

ディレクトリ構成

src
  ├── asstes
  │   ├── images
  │   ├── js
  │   └── inc
  │        ├── _header.ejs
  │        └── _footer.ejs
  ├── page
  │   └── index.ejs
  ├── index.ejs
  └── json
      └── common.json
gulpfile.js
// ※package.json,node_modulesなどのディレクトリ・ファイルは割愛

gulpfile.js

var gulp    = require("gulp"),
  ejs         = require("gulp-ejs"),
  rename      = require('gulp-rename'),
  fs          = require("fs"),
  browserSync = require('browser-sync'),
  reload      = browserSync.reload,
  plumber     = require("gulp-plumber"),
  changed     = require('gulp-changed'),
  watch       = require("gulp-watch"),
  runSequence = require('run-sequence'),
  SRC         = "src/",
  DIST        = "dist/"
require("es6-promise").polyfill();

gulp.task('ejs', function() {
  var json = JSON.parse(fs.readFileSync(SRC + 'json/common.json'));
  return gulp.src([SRC + '**/*.ejs','!' + SRC + '**/inc/_*.ejs'])
  .pipe(changed(SRC + '**/*.ejs'))
  .pipe(plumber())
  .pipe(ejs({json}))
  .pipe(rename({extname: '.html'}))
  .pipe(gulp.dest(DIST))
  .pipe(browserSync.reload({
    stream: true
  }));
});

gulp.task('json',function() {
  gulp.src(SRC + 'json/common.json')
  .pipe(changed(SRC + 'json/common.json'))
  .pipe(browserSync.reload({
    stream: true
  }));
});

gulp.task('watch', () => {
  watch([SRC + 'json/common.json'], function(event){
      gulp.start("json");
  });
  watch([SRC + '**/*.ejs'], function(event){
      gulp.start("ejs");
  });
});

gulp.task('browser-sync', () => {
    return browserSync.init(null, {
        server: DIST,
        reloadDelay: 100
    });
});

gulp.task('default', ['ejs', 'json','browser-sync', 'watch']);
Related Posts

Related Posts

gulp-ejsでdestする際に拡張子をejsからhtmlに変更する方法

2018-01-08

Gulp導入からSassコンパイルするまで

2017-04-02

テンプレートエンジン「EJS」で効率的にコーディングするためのメモ

2018-04-18

Node.jsをバージョン管理する方法-Windows・Mac

2019-07-03