"Task never defined" 从 Gulp 3 到 Gulp 4 的错误
"Task never defined" error going from Gulp 3 to Gulp 4
升级到 Node v12 后,我试图将我的 gulp 3 文件转换为 gulp 4,但即使在阅读 tutorials/examples 后我仍然出错。我收到 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']);
非常感谢任何帮助,谢谢!
开始这个表格是不正确的:
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'));
完成所有这些更改后,查看是否出现任何其他错误。
升级到 Node v12 后,我试图将我的 gulp 3 文件转换为 gulp 4,但即使在阅读 tutorials/examples 后我仍然出错。我收到 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']);
非常感谢任何帮助,谢谢!
开始这个表格是不正确的:
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'));
完成所有这些更改后,查看是否出现任何其他错误。