当前位置: 首页 > 面试题库 >

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

洪胤
2023-03-14
问题内容

我有一个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

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


问题答案:

正如您所怀疑的那样,您使这一过程变得太复杂了。目的地也不必是动态的,因为Globed路径也用于此dest。只需通过管道将其传递到您要从中遍历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("./"));


 类似资料:
  • 当然,有关标准的事物是如此之多。有时每个应用程序的配置格式都略有不同, 书写正则表达式来解析和修改所有这些配置文件是一项很烦人的工作。 幸好 Augeas 在这方面可以帮助我们。Augeas 是一个旨在简化使用不同配置文件格式工作的工具, 它将不同格式的配置文件统一呈现为一个简单的包含所有配置项的树状结构。 Puppet 的 Augeas 支持允许你创建 augeas 资源,它可以智能地自动地为所

  • 我已经仔细阅读了飞行路线文档,但我不清楚我想要的场景是否可行。我需要在同一数据库中修补许多相同的模式,但在编写sql脚本时,我不知道所有的模式名称。 我知道架构参数,但常见问题解答中提到的2种可能的策略不适用于我的方案。 这个场景类似于大学为学生提供模式: 我想为对象提供没有模式前缀的sql脚本 每个架构都应该有自己的schema_version表 在飞行方式:迁移模式参数中定义的每个模式都应该单

  • 问题内容: 我正在尝试在我的Spring Boot项目构建中实现一个简单的方案:包括/排除依赖项以及根据环境打包战争或jar。 因此,例如,对于环境包括devtools和package jar,对于包war等。 我知道它不再是基于XML的配置了,我基本上可以在build.gradle中编写if语句,但是有没有推荐的方法来实现这一点? 我可以声明一些常见的依赖项并将它们引用在一个文件中,而不是创建多

  • 如何使用适配器模式 横滑的滚动栏理论上应该是这个样子的: 新建一个 Swift 文件:HorizontalScroller.swift ,作为我们的横滑滚动控件, HorizontalScroller 继承自 UIView 。 打开 HorizontalScroller.swift 文件并添加如下代码: @objc protocol HorizontalScrollerDelegate { } 这

  • 我正在使用spring Boot1.5.2,并使用配置文件,但我发现了一个非常奇怪的事情。 在application.yml中配置 application-dev.yml 看起来一切都还好。 但是当我尝试运行jar时,它总是使用dev概要文件,尽管显示我们现在使用概要文件。 我不知道我的yml配置哪里出了问题。我尝试将所有配置文件都包含在一个application.yml文件中。但是应用程序仍然使

  • 在git端修改配置后如何让客户端生效? 访问接口修改 refresh post方式执行http://localhost/refresh 会刷新env中的配置 restart 如果配置信息已经注入到bean中,由于bean是单例的,不会去加载修改后的配置 需要通过post方式去执行http://localhost/restart, 需要通过application.properties中配置endpo