gulp-ejsで<%= filename %>が使えない問題の回避策としてgulp-dataを使う


以前のバージョンでは <%= finename %> でEJSファイルのパスが取得できたんですが、
いつのまにか(gulp-ejs v3から?)これが取得できなくなって困っていました。

EJSでルートへのパス(相対、絶対)を取得して変数化する

EJSをコンパイルする前に、gulp-data を挟んだら回避できました。

gulpfile.js
let gulp = require('gulp');
let $ = require('gulp-load-plugins')();

gulp.task("ejs", callback => {
  return gulp.src([
    "ejs/**/*.ejs",
    '!' + "ejs/**/_*.ejs"
  ])
  .pipe($.plumber())
  .pipe($.data(file => {
    return {
      'filename': file.path
    }
  }))
  .pipe(
    $.ejs()
    .on('error', $.util.log)
  )
  .pipe($.rename({
    extname: '.html'
  }))
  .pipe(gulp.dest( yourDestDir ));
});