Gulp V4.0.0“gulp start”不是函数

h7appiyu  于 2023-04-03  发布在  Gulp
关注(0)|答案(2)|浏览(230)

我在gulpfile.js下面有这个。当我使用'gulp start'运行应用程序时,它显示start不是一个函数。Glup-cli版本我使用V4.0.0

const gulp = require('gulp');
const concat = require('gulp-concat');
const browserSync = require('browser-sync').create();

const scripts = require('./scripts');
const styles = require('./styles');

// Some pointless comments for our project.

var devMode = false;

gulp.task('css', function() {
    gulp.src(styles)
        .pipe(concat('main.css'))
        .pipe(gulp.dest('dist/css'))
        .pipe(browserSync.reload({
            stream: true
        }));
});

gulp.task('js', function() {
    gulp.src(scripts)
        .pipe(concat('scripts.js'))
        .pipe(gulp.dest('./dist/js'))
        .pipe(browserSync.reload({
            stream: true
        }));
});

gulp.task('html', function() {
    return gulp.src('./src/templates/**/*.html')
        .pipe(gulp.dest('./dist/'))
        .pipe(browserSync.reload({
            stream: true
        }));
});

gulp.task('build', function() {
    gulp.start(['css', 'js', 'html'])
});

gulp.task('browser-sync', function() {
    browserSync.init(null, {
        open: false,
        server: {
            baseDir: 'dist',
        }
    });
});

gulp.task('start', function() {
    devMode = true;
    gulp.start(['build', 'browser-sync']);
    gulp.watch(['./src/css/**/*.css'], ['css']);
    gulp.watch(['./src/js/**/*.js'], ['js']);
    gulp.watch(['./src/templates/**/*.html'], ['html']);
});
lb3vh1jj

lb3vh1jj1#

gulp.start在v4中已被弃用。根据您的需要,您可以使用gulp.seriesgulp.parallel

- gulp.task('start', function() {
-   devMode = true;
-   gulp.start(['build', 'browser-sync']);
+ gulp.task('start', gulp.series('build', 'browser-sync'), function(done) {
+   devMode = true;
    gulp.watch(['./src/css/**/*.css'], ['css']);
    gulp.watch(['./src/js/**/*.js'], ['js']);
    gulp.watch(['./src/templates/**/*.html'], ['html']);
  });

这个问题可能是this one的重复,但由于这个问题还没有得到公认的答案,我只是重复Mark的答案。

zynd9foi

zynd9foi2#

正如Derek所说,在gulp的v4中,你必须使用gulp.series或gulp.parallel;
v4的另一个不同之处是,当任务完成时,你需要明确,你有6种方法来做到这一点..我将链接这个答案,以获得一个非常好的解释Gulp error: The following tasks did not complete: Did you forget to signal async completion?
穆罕默德的解释可能有助于深入了解原因,你可以找到两个:Migrate gulp.start function to Gulp v4
我已经尝试了这个解决方案,但它需要更多的代码,所以我将在这里写我的主要变化:

gulp.task("build",
    gulp.series(gulp.parallel("css", "js", "html"), function (done) {
        done();
    })
);

  gulp.task("start", gulp.series("build", "browser-sync"), function (done) {
      devMode = true;
      gulp.watch(["./src/css/**/*.css'"], ["css"]);
      gulp.watch(["./src/js/**/*.js"], ["js"]);
      gulp.watch(["./src/templates/**/*.html"], ["html"]);
   done();
});

在所有其他任务中,我只是添加了 done() 函数(任务html除外,因为它在任务完成时已经显式返回)
希望这对其他人有帮助,祝你有美好的一天:)

相关问题