Gulp SASS使用通配符监视命令目标路径

时间:2017-03-28 08:03:19

标签: javascript css sass gulp

我在许多目录中的SASS(SCSS)文件上有一个gulp watch命令(每个目录都是一个单独的项目)

var gulp = require('gulp');
var sass = require('gulp-sass');

gulp.task('sass', function(){
  gulp.src('**/Masters/**/assets/scss/*.scss')
  .pipe(sass({
    outputStyle: 'compressed'
  }).on('error', sass.logError))
  .pipe(gulp.dest('**/Masters/**/assets/css'));
})

gulp.task('sass:watch', function () {
  gulp.watch('**/Masters/**/assets/scss/*.scss', ['sass']);
});

我很难动态指定目标路径。我想在父目录上运行1个watch命令,然后在每个子目录中查看更改,如果有更改,请编译sass并将css文件移动到每个项目文件夹中的css目录。

我现在的代码是按需要查看每个目录,但目标没有按预期工作,该命令创建一个名为**的目录,而不是使用**作为通配符。

有谁知道如何动态指定dest路径?

1 个答案:

答案 0 :(得分:2)

您需要在basegulp.src中设置dest作为当前目录。这将使用输入目录作为输出。

然后使用gulp-rename../css添加到目录路径。这会将输出定向到css目录,它是输入目录的兄弟。

gulp.task('sass', function(){
  gulp.src('**/Masters/**/assets/scss/*.scss', {base: "./"})
  .pipe(sass({
    outputStyle: 'compressed'
  }).on('error', sass.logError))

  .pipe(rename(function (path) {
    path.dirname += "/../css";
  }))

  .pipe(gulp.dest('./'));
})