【问题标题】:"Task never defined" error going from Gulp 3 to Gulp 4从 Gulp 3 到 Gulp 4 的“任务从未定义”错误
【发布时间】:2020-03-13 12:01:46
【问题描述】:

升级到 Node v12 后,我正在尝试将我的 gulp 3 文件转换为 gulp 4,即使在阅读了教程/示例之后,我仍然会出错。我收到了AssertionError [ERR_ASSERTION]: Task never defined: sass error

我的 gulpfile.js 文件:

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

// Compile Sass & Inject Into Browser
gulp.task('sass', gulp.series('sass'), function() {
    return gulp.src(['node_modules/bootstrap/scss/bootstrap.scss', 'src/scss/*.scss'])
        .pipe(sass())
        .pipe(gulp.dest("src/css"))
        .pipe(browserSync.stream());
});

// Move JS Files to src/js
gulp.task('js', gulp.series(['js']), function() {
    return gulp.src(['node_modules/bootstrap/dist/js/bootstrap.min.js', 'node_modules/jquery/dist/jquery.min.js','node_modules/popper.js/dist/umd/popper.min.js'])
        .pipe(gulp.dest("src/js"))
        .pipe(browserSync.stream());
});

// Watch Sass & Serve
gulp.task('serve', gulp.series(['sass']), function() {

    browserSync.init({
        server: "./src"  
    });

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

// Move Fonts to src/fonts
gulp.task('fonts', gulp.series(['fonts']), function() {
  return gulp.src('node_modules/font-awesome/fonts/*')
    .pipe(gulp.dest('src/fonts'))
})

// Move Font Awesome CSS to src/css
gulp.task('fa', gulp.series(['fa']), function() {
  return gulp.src('node_modules/font-awesome/css/font-awesome.min.css')
    .pipe(gulp.dest('src/css'))
})

gulp.task('default', ['js','serve', 'fa', 'fonts']);

非常感谢任何帮助,谢谢!

【问题讨论】:

    标签: javascript sass gulp


    【解决方案1】:

    开始这个表格不正确:

    gulp.task('sass', gulp.series('sass'), function() {
    

    这会在'sass' 任务本身的开头调用'sass'。它可能会导致无限循环。我怀疑这是您错误的原因,因为您在完全定义之前调用了 'sass' 任务。

    gulp.task 只接受两个参数:名称和一个函数,所以这是正确的:

    gulp.task('sass', function() {
    

    所以对你的所有任务进行更改,除了:

    gulp.task('serve', gulp.series(['sass']), function() { 
    

    您可能希望在启动服务器之前运行'sass' 任务。但是你仍然只能有两个参数 gulp.task 所以试试

    gulp.task('serve', gulp.series('sass', function() {
    

    最后是这一行

    gulp.task('default', ['js','serve', 'fa', 'fonts']);
    

    需要gulp.series 才能在 gulp v4 中正常工作,因此请尝试

    gulp.task('default', gulp.series('js','serve', 'fa', 'fonts'));
    

    完成所有这些更改后,看看是否还有其他错误。

    【讨论】:

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