首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重构到Gulp 4

重构到Gulp 4
EN

Stack Overflow用户
提问于 2019-12-12 23:24:08
回答 1查看 72关注 0票数 0

我知道有很多关于这个的帖子,但我找不到解决方案。

这是我尝试重构但没有成功的gulpfile,所以在这里尝试得到一些答案。我尝试了所有我找到的关于Gulp3、->、Gulp4的东西,但都不起作用。也许有人有类似的设置,需要转换?

自从我接触这个代码已经很久了,我现在对Gulp感到有点迷茫。

代码语言:javascript
复制
  return gulp.src('app/src/files/**/*.pdf')
    .pipe(gulp.dest(dist + '/files'))
});

gulp.icons ({
    return gulp.src('app/src/icons/**/*.svg')
        .pipe(svgSprite(config))
        .pipe(gulp.dest(dist));
});


gulp.css({
    const processors = [
        atImport,
        cssnext,
        mqpacker,
        clearfix,
        cssnano
    ];
    return gulp.src('app/src/css/*.css')
        .pipe(postcss(processors))
        .pipe(rename('main.min.css'))
        .pipe(gulp.dest(dist));
});

gulp.nunjucks({
    return gulp.src('app/pages/*.njk')
    // Adding data to Nunjucks
        .pipe(data(function () {
            return require('./data.json')
        }))
        .pipe(nunjucksRender({
            path: ['app/pages/', 'app/templates/'] // String or Array
        }))
        .pipe(gulp.dest(dist));
});

gulp.browser-sync({
    browserSync({
        server: {
            baseDir: dist
        }
    });
});

gulp.scripts({
    return gulp.src('app/src/js/**/*.js')
        .pipe(concat('main.js'))
        .pipe(rename('main.min.js'))
        .pipe(uglify())
        .pipe(gulp.dest(dist))
        .pipe(reload({stream: true}));
});

gulp.images({
    return gulp.src('app/src/img/**/*')
        .pipe(imagemin({optimizationLevel: 3, progressive: true, interlaced: true}))
        .pipe(gulp.dest('${dist}/img'))
});

gulp.watch({
    gulp.watch('app/templates/**/*.+(njk)', ['nunjucks', reload]);
    gulp.watch('app/**/*.+(njk)', ['nunjucks', reload]);
    gulp.watch('app/src/**/*.css', ['css', reload]);
    gulp.watch(['app/src/js/**/*.js', 'main.js'], ['scripts', reload]);
    gulp.watch('app/src/img/**/*', ['images', reload]);
    gulp.watch('app/src/icons/**/*', ['icons', reload]);
});

gulp.task('default', gulp.parallel('nunjucks', 'css', 'files', 'scripts', 'icons', 'images', 'watch', 'browser-sync'));
gulp.task('build', gulp.parallel('nunjucks', 'files', 'css', 'scripts', 'icons', 'images'));```
EN

回答 1

Stack Overflow用户

发布于 2019-12-13 07:36:04

这个表单是错误的:

代码语言:javascript
复制
gulp.icons ({
    return gulp.src('app/src/icons/**/*.svg')
        .pipe(svgSprite(config))
        .pipe(gulp.dest(dist));
});

all更改为:

代码语言:javascript
复制
gulp.task('icons', function() {
    return gulp.src('app/src/icons/**/*.svg')
        .pipe(svgSprite(config))
        .pipe(gulp.dest(dist));
});

并且您的所有watch语句都是错误的,请将它们全部更改为以下形式:

gulp.watch('app/templates/**/*.+(njk)', gulp.series('nunjucks', reload));

您没有显示reload函数,所以我假设它是一个函数,而不是gulp.task('reload')形式??

我也会改变这一点:

gulp.task('default', gulp.parallel('nunjucks', 'css', 'files', 'scripts', 'icons', 'images', 'watch', 'browser-sync'));

由于您最后一次调用browser-sync,因此gulp.series会更好,以便其他任务在第一次运行时已完成,并且它们的更改将在第一次运行时显示在浏览器中:

gulp.task('default', gulp.series('nunjucks', 'css', 'files', 'scripts', 'icons', 'images', 'watch', 'browser-sync'));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59307866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档