サンプルファイル
https://github.com/shimakyohsuke/gulp-ejs-filesystem
取り急ぎ社内説明用に投稿
package.json
{
  "devDependencies": {
    "gulp": "^3.9.0",
    "gulp-ejs": "^2.0.0",
    "gulp-plumber": "^1.1.0",
    "fs": "0.0.2"
  }
}
gulpfile.js
'use strict';
var gulp = require('gulp');
var ejs = require('gulp-ejs');
var plumber = require('gulp-plumber');
var fileSystem = require('fs');
gulp.task('ejs', function () {
    return gulp.src('./src/ejs/*.ejs')
        .pipe(plumber())
        .pipe(ejs(
            {
                config: JSON.parse(fileSystem.readFileSync('./data/config.json')),
                page: JSON.parse(fileSystem.readFileSync('./data/page.json')),
                loop: require('./data/loop.js')
            },
            {
                ext: '.html'
            }
        ))
        .pipe(gulp.dest('./dist/'));
});
./data/config.json
{
    "siteTitle": "siteTitle"
}
./data/page.json
{
    "hoge": {
      "headline": "hogemoge"
    }
}
./data/loop.js
module.exports = [
    {
        "tagline": "tagline",
        "article": "article"
    },
    {
        "tagline": "tagline2",
        "article": "article2"
    }
];
./src/ejs/index.ejs
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title><%= page.hoge.headline %> | <%= config.siteTitle %></title>
  </head>
  <body>
    <h1><%= page.hoge.headline %></h1>
<% loop.forEach(function(data){ %>
    <div class="article">
      <h2><%= data.tagline %></h2>
      <p><%= data.article %></p>
    </div>
<% }); %>
  </body>
</html>
$ gulp ejs
./dist/index.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>hogemoge | siteTitle</title>
  </head>
  <body>
    <h1>hogemoge</h1>
    <div class="article">
      <h2>tagline</h2>
      <p>article</p>
    </div>
    <div class="article">
      <h2>tagline2</h2>
      <p>article2</p>
    </div>
  </body>
</html>