如何解决从Gulp 3升级到Gulp 4
我试图将下面的gulp文件从v3更新到Gulp v4,但仍然出现错误:AssertionError [ERR_ASSERTION]: Task never defined: client
不确定我缺少什么,但是意识到这些功能可能无法正确编写。我相信系列任务是正确的:例如gulp.task('build',gulp.series('client','sass'));
。
// gulpfile.js
var gulp = require('gulp'),concat = require('gulp-concat'),browserify = require('gulp-browserify'),rename = require('gulp-rename'),nodemon = require('gulp-nodemon'),sass = require('gulp-sass');
gulp.task('build','sass'));
gulp.task('watch',gulp.series('client-watch','sass-watch'));
gulp.task('server',function () {
nodemon({
script: 'server/index',ext: 'js json'
});
});
gulp.task('client',function () {
gulp.src('client/js/main.js')
.pipe(browserify({
transform: ['hbsfy'],extensions: ['.hbs']
}))
.pipe(rename('hearthclone.js'))
.pipe(gulp.dest('./client/build'));
});
gulp.task('client-watch',function () {
gulp.watch('client/js/**/*.js',['client']);
});
gulp.task('sass',function () {
gulp.src('client/**/*.scss')
.pipe(sass())
.pipe(concat('style.css'))
.pipe(gulp.dest('client/assets/css'));
});
gulp.task('sass-watch',function () {
gulp.watch('client/**/*.scss',['sass']);
});
gulp.task('default',gulp.series('build','server','watch'));
解决方法
当您使用gulp.task
形式定义任务(而不是作为函数)时,只有在声明它们之后,才能引用这些任务名称。那将是一个forward reference
(见下文)。所以只要把你的
gulp.task('build',gulp.series('client','sass'));
gulp.task('watch',gulp.series('client-watch','sass-watch'));
在定义所有这些任务之后,。我建议就在default
任务行之前。
请参见https://gulpjs.com/docs/en/api/series#forward-references
转发参考
前向引用是在使用字符串编写任务时 参考,尚未注册。这很常见 在较旧的版本中进行练习,但此功能已删除以实现 更快的任务运行时间并促进使用命名函数。
在较新的版本中,您会收到一条错误消息,提示“任务永不 定义”,如果您尝试使用前向引用。您可能会遇到 尝试使用导出进行任务注册时使用此选项, 按字符串组成任务。在这种情况下,请使用命名函数 而不是字符串引用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。