如何使用gulp编译文件并保持相同的文件夹结构?

时间:2018-05-01 09:13:50

标签: gulp

我想编译所有的哈巴狗文件。

这是我的src文件夹结构

src
  pug
    a
      a.pug
    b
      b.pug

我希望gulp编译所有的pug文件,但保留dest文件夹中的文件夹结构。

这应该是dest文件夹结构

dest
  a
    a.html
  b
    b.html

我尝试使用此代码,但它无效,它将所有HTML文件发送到的位置:dest/src/pug

function getFolders(dir) {
  return fs.readdirSync(dir).filter(function(file) {
    return fs.statSync(path.join(dir, file)).isDirectory();
  });
}

var pugPath = "src/pug";

gulp.task("html", function() {
  var folders = getFolders(pugPath);
  var tasks = folders.map(function(folder) {
    return gulp
      .src([
        path.join(pugPath, folder, "src/pug/**/*.pug"),
        "!" + pugPath + "/includes/**/*.pug"
      ])
      .pipe(pug())
      .pipe(gulp.dest(paths.dest.html));
  });

  var root = gulp
    .src(path.join(pugPath, "src/pug/**/*.pug"))
    .pipe(pug())
    .pipe(gulp.dest(paths.dest.html));

  return merge(tasks, root);
});

1 个答案:

答案 0 :(得分:0)

如果你使用类似src / pug / ** / * .pug的glob来递归地抓取文件夹中的所有文件 - 然后管道到dest('test'),似乎大多数代码都可以抛出。您组合文件夹的方式很可能是错误发生的地方。

gulp.task("html", function() {
  return gulp.src([ 'src/pug/**/*.pug', '!src/pug/includes/**/*.pug' ])
    .pipe(pug())
    .pipe(gulp.dest('test'));
});