Gulp / Vinyl-fs - 与 src 相同的目录不适用于 gulp-rename

Gulp / Vinyl-fs - dest same directory as src not working with gulp-rename

本文关键字:不适用 gulp-rename 适用于 Vinyl-fs src Gulp      更新时间:2023-09-26

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

使用 Gulp 和通配模式就地修改文件(相同的目标.js

这是我的代码

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/ 下的子目录中找到所有索引.html并内联 css(我可以确认这一点),但无法将该文件写回索引.html来自的同一子目录中。 相反,它会将它们全部写入电子邮件目录,覆盖上一个内联.html然后只留下最后一个要处理的文件。

我已经尝试了该帖子和与此问题相关的其他帖子中提供的所有变体,但没有成功。 从那以后文件球有变化吗?还是大口大口地吃? 我使用 vinyl-fs 而不是 gulp 运行这个,这是相同的交易。

查看 gulp-rename 文档的注释部分,这有效。

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("."));
});