0

我正在试验 gulp 4 ,我有几个任务(buildIndex、、buildContent和)在构建文件夹中插入文件。buildStylingbuildScripts

我想将这些任务组合成一个任务,这样我就可以在顶层执行该组。

这就是我现在让它工作的方式。它在未来可能不起作用,因为此评论指出 gulp 4 意图在顶层执行所有任务。

const { src, dest, parallel, series, watch } = require('gulp');
const browserSync = require('browser-sync').create();
const clean = require('gulp-clean');
const uglify = require('gulp-uglify');
const sass = require('gulp-sass');
var rename = require('gulp-rename');

exports.default = series(
  rebuild,
  parallel(
    host,
    watchSource));

function rebuild(cb) {
  series(
    deleteBuild,
    build)();
  cb();
}

function host(cb) {
  browserSync.init({
    server: {
      baseDir: 'build'
    }
  });
  watch('build/**').on('change', browserSync.reload);
  cb();
}

function watchSource() {
  watch('src/**', rebuild);
}

function deleteBuild() {
  return src('build', { allowEmpty: true, read: false })
    .pipe(clean());
}

function build(cb) {
  parallel(
    buildIndex,
    buildContent,
    buildStyling,
    buildScripts)();
  cb();
}

function buildIndex() {
  return src('src/index.html')
    .pipe(dest('build'))
    .pipe(browserSync.stream());
}

function buildContent() {
  return src('src/content/**/*.html')
    .pipe(dest('build/content'))
    .pipe(browserSync.stream());
}

function buildStyling() {
  return src('src/styling/**/*.scss')
    .pipe(sass.sync().on('error', sass.logError))
    .pipe(dest('build/styling'))
    .pipe(browserSync.stream());
}

function buildScripts() {
  return src('src/scripts/**/*.js')
    .pipe(uglify())
    .pipe(rename({ extname: '.min.js' }))
    .pipe(dest('build/scripts', { sourcemaps: true }))
    .pipe(browserSync.stream());
}

分组任务的正确方法是什么?

4

1 回答 1

0

编辑:

您已经将默认任务贴在export.default. 如果你想添加另一个运行你提到的任务的任务,你可以这样做:

并行运行任务:

exports.mynewtask = parallel(buildIndex, buildContent, buildStyling, buildScripts);

一个接一个地运行任务:

exports.mynewtask = series(buildIndex, buildContent, buildStyling, buildScripts);

这似乎是对任务进行分组的正确方法,您可以在此 Gulp.js 文档中看到 parallel()

.

与旧的 Gulp 语法相同的是:

const gulp = require("gulp");
...
gulp.task('default', gulp.parallel('buildIndex', 'buildContent', 'buildStyling', 'buildScripts'));
// or
gulp.task('default', gulp.series('buildIndex', 'buildContent', 'buildStyling', 'buildScripts'));
于 2019-03-26T07:43:47.483 回答