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

More than 1 year has passed since last update.

以前のバージョンでは <%= 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 ));
});