【问题标题】:Gulp SASS watch command destination path with wildcard带有通配符的 Gulp SASS 监视命令目标路径
【发布时间】:2017-08-21 04:39:34
【问题描述】:

我在许多目录中的 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 个监视命令,然后监视每个子目录的更改,如果有更改编译 sass 并将 css 文件移动到每个项目文件夹中的 css 目录。

我现在拥有的代码正在按要求监视每个目录,但目标无法按预期工作,该命令创建一个名为 ** 的目录,而不是使用 ** 作为通配符。

有人知道如何动态指定目标路径吗?

【问题讨论】:

  • move css file to css directory - 会不会像**/masters/**/assets/css/?

标签: javascript css sass gulp


【解决方案1】:

您需要将gulp.src和dest中的base设置为当前目录。这将使用输入目录作为输出。

然后使用gulp-rename将../css添加到目录路径。这会将输出定向到与输入目录同级的 cssdir。

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('./'));
})

【讨论】:

  • 非常感谢,正是我想要的:)
  • 有没有办法使用内置的 gulp 选项options.base 做到这一点?如果是这样,就不需要下载第三方模块gulp-rename。
  • 我认为这里不可能,css 目录是根据src 路径动态创建的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-12
相关资源
最近更新 更多