我有一个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,生成的文件路径为just project/partials。
console.log(fileLocation)
project/sass/partials
project/partials
如果有一个简单得多的方法,我肯定会更喜欢这种解决方案。谢谢!
正如您所怀疑的那样,您使这一过程变得太复杂了。目的地也不必是动态的,因为Globed路径也用于此dest。只需通过管道将其传递到您要从中遍历src的同一基本目录,在本例中为“ sass”:
dest
gulp.src("sass/**/*.scss") .pipe(sass()) .pipe(gulp.dest("sass"));
如果您的文件没有共同的基础,并且您需要传递路径数组,那么这已不再足够。在这种情况下,您需要指定基本选项。
var paths = [ "sass/**/*.scss", "vendor/sass/**/*.scss" ]; gulp.src(paths, {base: "./"}) .pipe(sass()) .pipe(gulp.dest("./"));