首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Gulp.js和全局模式就地修改文件(相同的dest)

使用Gulp.js和全局模式就地修改文件(相同的dest)
EN

Stack Overflow用户
提问于 2014-04-23 22:39:18
回答 5查看 51K关注 0票数 103

我有一个gulp任务,它尝试将.scss文件转换为.css文件(使用gulp-ruby-sass),然后将生成的.css文件放入找到原始文件的相同位置。问题是,因为我使用的是全局模式,所以我不一定知道原始文件存储在哪里。

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

代码语言:javascript
复制
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

如果有一种更简单的方法来做这件事,我肯定会更喜欢这个解决方案。谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-04-23 23:49:00

正如您所怀疑的那样,您把事情搞得太复杂了。目的地不需要是动态的,因为全局路径也用于dest。只需通过管道将src添加到与src相同的基目录,在本例中为"sass":

代码语言:javascript
复制
gulp.src("sass/**/*.scss")
  .pipe(sass())
  .pipe(gulp.dest("sass"));

如果您的文件没有公用库,并且您需要传递路径数组,则这是不够的。在这种情况下,您需要指定基本选项。

代码语言:javascript
复制
var paths = [
  "sass/**/*.scss", 
  "vendor/sass/**/*.scss"
];
gulp.src(paths, {base: "./"})
  .pipe(sass())
  .pipe(gulp.dest("./"));
票数 158
EN

Stack Overflow用户

发布于 2015-06-22 02:42:03

这比numbers1311407所领导的要简单。您根本不需要指定目标文件夹,只需使用.即可。另外,一定要设置基目录。

代码语言:javascript
复制
gulp.src("sass/**/*.scss", { base: "./" })
    .pipe(sass())
    .pipe(gulp.dest("."));
票数 70
EN

Stack Overflow用户

发布于 2015-11-26 19:26:40

代码语言:javascript
复制
gulp.src("sass/**/*.scss")
  .pipe(sass())
  .pipe(gulp.dest(function(file) {
    return file.base;
  }));

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

我知道这个帖子很旧,但它仍然是谷歌上的第一个结果,所以我想我还是把这个链接贴在这里吧。

票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23247642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档