【问题标题】:Gulp error: Task function must be specifiedGulp 错误:必须指定任务函数
【发布时间】:2020-06-13 22:33:53
【问题描述】:

这是我第一次使用 Gulp,我正在尝试制作一个 gulpfile 来缩小和合并 cssjs 文件,但是当我运行命令 gulp 时出现此错误:

C:\Users\S.Hocine\Desktop\gulpTest>gulp
AssertionError [ERR_ASSERTION]: Task function must be specified
    at Gulp.set [as _setTask] (C:\Users\S.Hocine\Desktop\gulpTest\node_modules\undertaker\lib\set-task.js:10:3)
    at Gulp.task (C:\Users\S.Hocine\Desktop\gulpTest\node_modules\undertaker\lib\task.js:13:8)
    at Object.<anonymous> (C:\Users\S.Hocine\Desktop\gulpTest\gulpfile.js:36:6)
    at Module._compile (internal/modules/cjs/loader.js:1156:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1176:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Module.require (internal/modules/cjs/loader.js:1042:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at requireOrImport (C:\Users\S.Hocine\AppData\Roaming\npm\node_modules\gulp-cli\lib\shared\require-or-import.js:19:11) {
  generatedMessage: false,
  code: 'ERR_ASSERTION',
  actual: false,
  expected: true,
  operator: '=='
}

我的 gulp 文件:

const gulp = require('gulp');
const uglify = require('gulp-uglify');
const concat = require('gulp-concat');

// minify and copy html
gulp.task('minifyHtml', function(){
    gulp.src('src/*.html')
        .pipe(uglify())
        .pipe(gulp.dest('dest'));
  });

// minify and merge css
gulp.task('minifyMergeCss', function(){
    gulp.src('src/css/*.css')
        .pipe(concat('merged-min.css'))
        .pipe(uglify())
        .pipe(gulp.dest('dest/css'));
  });

// minify and merge js
gulp.task('minifyMergeJs', function(){
  gulp.src('src/js/*.js')
      .pipe(concat('merged-min.js'))
      .pipe(uglify())
      .pipe(gulp.dest('dest/js'));
});

gulp.task('default', ['minifyHtml', 'minifyMergeCss', 'minifyMergeJs']);

gulp.task('watch', function(){
  gulp.watch('src/*.html', ['minifyHtml']);  
  gulp.watch('src/css/*.css', ['minifyMergeCss']);
  gulp.watch('src/js/*.js', ['minifyMergeJs']);
});

我的 gulp 版本:
CLI 版本:2.3.0
本地版本:4.0.2

问题出在哪里?

【问题讨论】:

  • 改为:gulp.task('default', gulp.series('minifyHtml', 'minifyMergeCss', 'minifyMergeJs'));你的三个gulp.watch 语句也是如此。例如,gulp.watch('src/*.html', gulp.series('minifyHtml'));你使用 gulp v3 语法 - 我改为 gulpv4 语法。

标签: javascript npm gulp


【解决方案1】:

如果您使用包含不同语法的 gulp 版本 V3,请使用最新版本的 gulp,如果您正在使用的 gulp 任务模块也无法使用最新版本,请使用这种方式,

An example of your function it must be,

    gulp.task('default', gulp.series('minifyHtml', 'minifyMergeCss', 'minifyMergeJs'));

现在可以正常工作了。发生这种情况是因为在 gulp v4 中 list 参数已被弃用。

请参阅 gulp documentation for running tasks in series 中更强大的示例

或者你可以查看文档npm

【讨论】:

  • 您能否详细说明并举一个更完整的例子?我不明白具体应该如何更改 OP 的来源。
猜你喜欢
  • 2021-11-19
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多