半小时看完了尚硅谷的 Gulp 教程,本来觉得 Gulp 其实还是挺简单的,没想到 Gulp 升级到 4.0.1 了。很多 API 也改变了使用方法,看着官方文档又学了一遍。今天 Forece 来讲一下 Gulp 3 升级到 Gulp 4 的一些变化。
Gulp 是前端工程化中最便捷的工具之一,用户通过配置个性化的插件,来提高工程师的开发效率。
- CSS、JS 文件合并
- LESS 文件解析转换 CSS
- CSS、JS、HTML 文件压缩
- ES6 转 ES5
- 代码实时同步使页面发生变化
- 等等
如果不想费事,还想使用 Gulp 3 版本的话,直接 npm 安装
npm install gulp@3.9.1 --save -dev
使用 gulp 之前别忘了安装 Gulp 的控制台
npm install --g gulp-cli
Gulp 4 对比 Gulp 3
引入Gulp
// Gulp3 var gulp = require('gulp') // Gulp4 // parallel, series, src, dest, watch 这些是 Gulp 的 API,需要什么就写什么 const { parallel, series, src, dest, watch } = require('gulp');
创建任务
// Gulp3 gulp.task('build',function(){ return console.log('build'); }) // Gulp4 // Gulp4 直接使用函数来创建任务 function build() { return console.log('build'); }
执行任务
// Gulp3 // 直接在控制台执行 Gulp taskname 就可以执行任务 // Gulp4 // 需要使用 exports 定义属性,才可以使用 gulp taskname 执行任务 exports.build = build;
默认任务
// Gulp3 // 定义了默认任务,直接 Gulp 就可以执行默认任务 gulp.task('default', ['js', 'css', 'html']) // Gulp4 // exports.default 创建默认任务(单任务、同步、异步) exports.default = parallel(js, css, html)
同步任务
// Gulp3 // 去掉 return 就是同步任务,顺序执行 gulp.task('css', function () { gulp.src('src/css/*.css') .pipe(dest('dist/css/')) }) // Gulp4 // 使用 series 执行异步任务 exports.default = series(js, css, html);
异步任务
// Gulp3 // 只要有 return 就自动异步 gulp.task('css', function () { return gulp.src('src/css/*.css') .pipe(dest('dist/css/')) }) // Gulp4 // 使用 parallel 执行异步任务 exports.default = parallel(js, css, html);
依赖任务
// Gulp3 // 只要创建任务时就可以定义依赖关系 gulp.task('css', ['less'], function () { return gulp.src('src/css/*.css') .pipe(dest('dist/css/')) }) // Gulp4 // 使用 series 配合 parallel 定义执行顺序 exports.default = parallel(js, series(less, css), html);
调用API
// Gulp3 gulp.task('css', ['less'], function () { return gulp.src('src/css/*.css') .pipe(dest('dist/css/')) }) // Gulp4 function css() { return src('src/css/*.css') .pipe(dest('dist/css/')) }) // 貌似没什么太大变化,可以不用写 gulp 调用了
监听事件
// Gulp3 gulp.watch(['src/css/*.css', 'src/less/*.less'], ['css']); // Gulp4 watch(['src/css/*.css', 'src/less/*.less'], css); // Gulp4 直接写方法名,或使用 series()
基本发现就这么多,有问题的可以一起讨论。