我在许多目录中的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路径?
答案 0 :(得分:2)
您需要在base
和gulp.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('./'));
})