我有一个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
。
如果有一种更简单的方法来做这件事,我肯定会更喜欢这个解决方案。谢谢!
发布于 2014-04-23 23:49:00
正如您所怀疑的那样,您把事情搞得太复杂了。目的地不需要是动态的,因为全局路径也用于dest
。只需通过管道将src添加到与src相同的基目录,在本例中为"sass":
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("./"));
发布于 2015-06-22 02:42:03
这比numbers1311407所领导的要简单。您根本不需要指定目标文件夹,只需使用.
即可。另外,一定要设置基目录。
gulp.src("sass/**/*.scss", { base: "./" })
.pipe(sass())
.pipe(gulp.dest("."));
发布于 2015-11-26 19:26:40
gulp.src("sass/**/*.scss")
.pipe(sass())
.pipe(gulp.dest(function(file) {
return file.base;
}));
这里给出了最初的答案:https://stackoverflow.com/a/29817916/3834540。
我知道这个帖子很旧,但它仍然是谷歌上的第一个结果,所以我想我还是把这个链接贴在这里吧。
https://stackoverflow.com/questions/23247642
复制相似问题