gulp4 相对以前的版本进行了修改,不再支持 task 后面第二个参数任务数组的写法,改为以下两种方式来执行任务
- gulp.parallel() --并行运行任务
- gulp.series() --运行任务序列
另外,gulp4 将 gulp-cli 和gulp分开了, cli只包含主要的命令,因此体积大幅缩小。 在使用前需要全局安装 gulp-cli, 以及本地安装gulp。
下面主要处理多页面开发效率的三个问题:
- less自动编译
- postcss转vw(屏幕自适应)
- 热更新(不需要手动刷新浏览器)
直接上代码吧。
package.json
{ "name": "name", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "author": "", "license": "ISC", "devDependencies": { "autoprefixer": "^9.8.0", "gulp": "^4.0.2", "gulp-connect": "^5.7.0", "gulp-less": "^4.0.1", "gulp-postcss": "^8.0.0", "postcss-px-to-viewport": "^1.1.1" } }
gulpfile.js
const { src, dest, parallel, watch, series } = require('gulp'); const postcss = require('gulp-postcss'); const connect = require('gulp-connect'); const autoprefixer = require('autoprefixer'); const pxtoviewport = require('postcss-px-to-viewport'); const less = require('gulp-less'); const rootDir = '.'; const lessDir = './static/less'; const cssDir = './static/css/'; const styleTask = (cb) => { const processors = pxtoviewport({ viewportWidth: 800, viewportHeight: 450, viewportUnit: 'vw', }); src(lessDir + '/*.less', { sourcemaps: true }) .pipe(less()) .pipe(postcss([autoprefixer, processors])) .pipe(dest(cssDir)) .pipe(connect.reload()); cb(); }; const startServer = (cb) => { const options = { livereload: true, }; connect.server(options); cb(); }; const html = (cb) => { src(rootDir + '/*.html') // .pipe(dest(html_dir)) .pipe(connect.reload()); cb(); }; const gulpWatch = (cb) => { watch([rootDir + '/*.html'], parallel(html)); watch([lessDir + '/*.less'], parallel(styleTask)); cb(); }; const _defaults = series(startServer, styleTask, html, gulpWatch); exports.default = _defaults;