【问题标题】:gulp combining tasks into default commandgulp 将任务组合到默认命令中
【发布时间】:2018-12-07 22:35:53
【问题描述】:

如何将我的styles 任务、browser-sync 和我的watch 任务合并为一个gulp 默认命令?

这是我目前所拥有的。

var gulp = require("gulp");
var sass = require("gulp-sass");
var browserSync = require("browser-sync").create();

gulp.task("styles", function() {
  gulp
    .src("sass/**/*.scss")
    .pipe(sass().on("error", sass.logError))
    .pipe(gulp.dest("./css/"));
});

// Static server
gulp.task("browser-sync", function() {
  browserSync.init({
    server: {
      baseDir: "./"
    }
  });
});

//Watch task
gulp.task("default", function() {
  gulp.watch("sass/**/*.scss", gulp.series("styles"));
});

我也从浏览器同步文档中尝试过这个,但它给了我错误AssertionError [ERR_ASSERTION]: Task function must be specified 在顶部使用相同的变量。

gulp.task("serve", ["sass"], function() {
  browserSync.init({
    server: "./"
  });

  gulp.watch("/sass/*.scss", ["sass"]);
  gulp.watch("/*.html").on("change", browserSync.reload);
});

// Compile sass into CSS & auto-inject into browsers
gulp.task("sass", function() {
  return gulp
    .src("/scss/*.scss")
    .pipe(sass())
    .pipe(gulp.dest("/css"))
    .pipe(browserSync.stream());
});

gulp.task("default", ["serve"]);

【问题讨论】:

    标签: node.js sass gulp


    【解决方案1】:

    我猜你正在使用 gulp 4,它处理依赖任务的方式有点不同,这就是你收到错误的原因。

    如果你确实在使用 gulp 4,试试官方的recipe

    var gulp = require('gulp');
    var sass = require('gulp-sass');
    var browserSync = require('browser-sync');
    
    gulp.task('sass', function() {
      return gulp.src('sass/**/*.scss')
        .pipe(sass().on('error', sass.logError))
        .pipe(gulp.dest('./css/')) //removed semicolon
        .pipe(browserSync.reload({ stream:true }));
    });
    
    // watch Sass files for changes, run the Sass preprocessor with the 'sass' task and reload
    gulp.task('serve', gulp.series('sass', function() {
      browserSync({
        server: {
          baseDir: './'
        }
      });
    
      gulp.watch('sass/**/*.scss', gulp.series('sass'));
    }));
    

    【讨论】:

    • 它工作,我不得不删除第 9 行的分号,我编辑了你的帖子,所以等待同行评审。我会选择你的答案。谢谢!
    【解决方案2】:

    只写gulp in command,运行所有任务。

    var gulp = require("gulp");
    var sass = require("gulp-sass");
    var browserSync = require("browser-sync").create();
    var runSequence = require('run-sequence'); // npm install run-sequence --save-dev
    
    gulp.task("styles", function () {
        gulp
          .src("sass/**/*.scss")
          .pipe(sass().on("error", sass.logError))
          .pipe(gulp.dest("./css/"));
    });
    
    // Static server
    gulp.task("browser-sync", function () {
        browserSync.init({
            server: {
                baseDir: "./"
            }
        });
    });
    
    
    //watch for files changes
    gulp.task('watch', ['styles', 'browser-sync'], function () {
        // sass files changes
        gulp.watch('sass/**/*.sass', ['styles']);
    
        // CSS files changes
        gulp.watch('css/**/*.css', browserSync.reload);
    });
    
    // The default task (called when you run 'gulp' from cli)
    gulp.task('default', function (callback) {
        runSequence(['styles', 'browser-sync', 'watch'],
          callback
        )
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-23
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 1970-01-01
      • 2020-10-26
      • 2023-04-11
      相关资源
      最近更新 更多