Gulp / Vinyl-fs - 与src相同的目录与gulp-rename不兼容

时间:2016-02-28 22:51:22

标签: javascript gulp

这是我关注的帖子,没有成功。

Modify file in place (same dest) using Gulp.js and a globbing pattern

这是我的代码

var fstrm = require('gulp');

var inlineCss = require('gulp-inline-css');
var rename = require("gulp-rename");

(function() {
  fstrm.src("emails/**/index.html")
    .pipe(inlineCss({}))
    .pipe(rename("inline.html"))
    .pipe(fstrm.dest("emails"));
}());

它在emails/下的子目录中找到所有index.html并内联css(我可以确认),但无法将该文件写回index.html所在的同一子目录中。相反,它会将它们全部写入电子邮件目录,覆盖之前的inline.html,然后只留下最后一个要处理的文件。

我已尝试过提供的所有变体,而另一篇与此问题相关的帖子却没有成功。自从fileglob改变了吗?还是吞了一口气?我使用乙烯基-fs而不是gulp运行它,这是同样的交易。

1 个答案:

答案 0 :(得分:1)

查看gulp-rename docs的“备注”部分,这有效。

var gulp = require('gulp');
var rename = require('gulp-rename');
var inlineCss = require('gulp-inline-css');

gulp.task('doit', function() {
  return gulp.src("emails/**/*index.html")
    .pipe(inlineCss({}))
    .pipe(rename(function(path) {
      path.dirname = '/emails/' + path.dirname;
      path.basename = path.basename.replace('index', 'inline');
      return path;
    }))
    .pipe(gulp.dest("."));
});