Gulp 4不会完成Sass任务

时间:2019-02-22 11:06:25

标签: node.js npm sass gulp

有一些与此问题相关的主题,但我仍未找到解决问题的方法或解释。

问题

我正在使用Gulp 4.0.0的本地版本,并且我先前存在的gulpfile.js正常运行。

我在Gulp文件中正在做什么:监视Sass文件的更改,对其进行自动前缀,并将输出文件重命名为theme.scss.liquid(对于Shopify),最后替换一些大括号以避开Liquid变量。

Sass任务

// Sass
gulp.task('sass', function() {
  gulp.src('./assets/scss/**/**/*.scss')
    .pipe(sass().on('error', function (err) {
      sass.logError(err);
      this.emit('end');
    }))
    .pipe(autoprefixer('last 2 versions'))
    .pipe(rename('theme.scss.liquid'))
    .pipe(replace('"{{', '{{'))
    .pipe(replace('}}"', '}}'))
    .pipe(gulp.dest('./assets/'));
});

观看任务

gulp.task('watch', function() {
  gulp.watch('./assets/scss/**/**/*.scss', gulp.series('sass'));
});

会发生什么

  • 运行gulp watch开始监视更改。
  • 更改或保存我的Sass将启动sass任务。
  • 什么都没发生
[12:55:33] Starting 'watch'...
[12:55:37] Starting 'sass'...

任何帮助都将不胜感激!

1 个答案:

答案 0 :(得分:1)

我对gulp.taskgulp v4有类似的问题

更好地采用新的gulp 4语法。

const gulp = require('gulp');
// other dependencies
// ....

const sassFn = (cb) => {
  gulp.src('./assets/scss/**/*.scss')
    .pipe(sass().on('error', sass.logError))
    .pipe(autoprefixer('last 2 versions'))
    .pipe(rename('theme.scss.liquid'))
    .pipe(replace('"{{', '{{'))
    .pipe(replace('}}"', '}}'))
    .pipe(gulp.dest('./assets'));

  cb();
};

const watchFn = () => {
  gulp.watch('./assets/scss/**/*.scss', sassFn);
};

exports.watch = watchFn;
exports.default = watchFn;

我删除了gulp.series(),因为我认为它至少需要2个任务才能运行。 此外,我更改了srcdest的路径。