2016-02-28 34 views
0

這裏是我沒有成功的文章。gulp /乙烯基 - fs - 目錄與src不兼容gulp-rename

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

發現在子目錄中的所有的index.html emails/下和內聯的CSS(這個我可以證實),但無法寫入該文件早在index.html來自同一個子目錄。相反,它會將它們全部寫入電子郵件目錄,覆蓋以前的inline.html,然後只剩下最後一個要處理的文件。

我已經嘗試過在該問題以及與此問題相關的其他帖子提供的每個變體,但沒有成功。自fileglob改變了嗎?或吞嚥?我使用vinyl-fs而不是吞嚥,這是同樣的交易。

回答

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

完美地工作。猜猜應該發生這樣的情況,即重命名與其他解決方案不一致的文件路徑混淆了。 – DKebler

相關問題