使用Gulp.js和通配模式在适当位置修改文件(相同目标)

我有一个gulp任务,试图将.scss文件转换为.css文件(使用gulp-ruby-sass),然后将生成的.css文件放到找到原始文件的位置。问题是,由于我使用的是遍历模式,因此我不一定知道原始文件的存储位置。

在下面的代码中,我尝试使用gulp-tap进入流并找出从中读取流的当前文件的文件路径:

gulp.task('convertSass', function() {
    var fileLocation = "";
    gulp.src("sass/**/*.scss")
        .pipe(sass())
        .pipe(tap(function(file,t){
            fileLocation = path.dirname(file.path);
            console.log(fileLocation);
        }))
        .pipe(gulp.dest(fileLocation));
});

根据的输出console.log(fileLocation),此代码似乎应该可以正常工作。但是,生成的CSS文件似乎比我期望的高了一个目录。结果应该在哪里project/sass/partials,文件路径就是project/partials

如果这样做的方法要简单得多,那么我肯定会更喜欢该解决方案。谢谢!

古一Near2020/03/18 15:37:01

这比数字1311407导致的更为简单。您根本不需要指定目标文件夹,只需使用即可.另外,请确保设置基本目录。

gulp.src("sass/**/*.scss", { base: "./" })
    .pipe(sass())
    .pipe(gulp.dest("."));
Green樱2020/03/18 15:37:01
gulp.src("sass/**/*.scss")
  .pipe(sass())
  .pipe(gulp.dest(function(file) {
    return file.base;
  }));

最初在这里给出答案:https : //stackoverflow.com/a/29817916/3834540

我知道这个线程很旧,但它仍然显示为google上的第一个结果,所以我认为最好在此发布链接。