一、gulp-htmlmin:html文件压缩
1.下载插件
npm install gulp-htmlmin npm install gulp-file-include
2.gulpfile.js中引用插件
const htmlmin = require('gulp-htmlmin');
const fileinclude = require('gulp-file-include');3.编写任务,调用插件
//html任务
//1.html文件中代码的压缩操作
//2.抽取html文件中的公共代码
gulp.task('htmlmin',(done) => {
gulp.src('./src/*.html')//*代表src下所有的HTML文件
.pipe(fileinclude())//抽离公共代码
//压缩HTML文件中的代码
.pipe(htmlmin({ collapseWhitespace: true }))//collapseWhitespace:代表压缩html代码是否压缩空格
.pipe(gulp.dest('dist'))
done()
})注意:虽然任务是压缩文件代码和抽离公共代码的顺序,但是我们做任务是要先抽离公共代码,再去压缩文件代码
我们把公共代码放在src目录下的common目录中

公共代码抽离出来后,在原本的HTML文件中引入公共代码
@@include('./common/header.html')这样执行了htmlmin这个任务后就会看到,压缩后的文件中也有了公共的头部

二、gulp-csso:压缩css
1.下载插件
npm install gulp-csso npm install gulp-less
2.gulpfile.js中引用插件
const less = require('gulp-less');
const csso = require('gulp-csso');3.编写任务,调用插件
//css任务
//1.less语法转换
//2.css代码压缩
gulp.task('cssmin',(done) => {
//选择css目录下的所有less文件以及css文件
gulp.src(['./src/css/*.less','./src/css/*.css'])
.pipe(less())//将less语法转换为css语法
.pipe(csso())//将css代码进行压缩
.pipe(gulp.dest('dist/css'));//将处理的结果进行输出
done();
})结果:


三、gulp-babel:JavaScript语法转化,es6转成es5
1.下载babel插件 https://www.npmjs.com/package/gulp-babel
通过bebel插件,转化成es5,通过gulp-uglify来压缩代码
npm install gulp-babel @babel/core @babel/preset-env
2.在gulpfile.js文件中引入插件:
const babel = require('gulp-babel');3.编写任务
//js任务
//1.es6代码转换
//2.代码压缩
gulp.task('jsmin',(done) => {
gulp.src('./src/js/*.js')
.pipe(babel({
//它可以判断当前代码的运行环境,将代码转换为当前运行环境所支持的代码
presets: ['@babel/env']
}))
.pipe(gulp.dest('dist/js'))
done();
})4.调用插件
gulp jsmin
结果:

压缩js文件:
1.下载babel插件 https://www.npmjs.com/package/gulp-uglify
通过bebel插件,转化成es5,通过gulp-uglify来压缩代码
npm install gulp-uglify
2.在gulpfile.js文件中引入插件:
const uglify = require('gulp-uglify');3.编写任务
//js任务
//1.es6代码转换
//2.代码压缩
gulp.task('jsmin',(done) => {
gulp.src('./src/js/*.js')
.pipe(babel({
//它可以判断当前代码的运行环境,将代码转换为当前运行环境所支持的代码
presets: ['@babel/env']
}))
.pipe(gulp.dest('dist/js'))
done();
})4.调用插件
gulp jsmin
结果:

四、复制文件夹
一般src文件夹中还会有image文件夹和lib文件夹,需要把他们也复制到dist目录下,只要编写下面任务,执行就好了
//复制文件夹
gulp.task('copy',(done) => {
gulp.src('./src/image/*')
.pipe(gulp.dest('dist/image'));
gulp.src('./src/lib/*')
.pipe(gulp.dest('dist/lib'));
done();
})执行:gulp copy
结果:

注意:如果image文件夹或者lib文件夹里面没有文件,是空的文件夹,就不会复制到dist文件夹中,就像上图中lib文件夹里面什么都没有,所以dist文件夹中也没有lib文件夹
现在这些任务都知道怎么执行了,因为是分别编写的,如果想要执行也要分别去执行他们,怎样才能执行一个任务,其他任务都能跟着执行呢?
接下来我们就来创建一个构建任务
//构建任务
gulp.task('default',['htmlmin','cssmin','jsmin','copy']);执行:gulp default

这个原因是:
运行gulp项目报错:AssertionError: Task function must be specified,那是因为你安装了gulp4.0.0,gulpfile.js用的是gulp3.9.1的语法。
AssertionError: Task function must be specified错误解决方案
npm i gulp@3.9.1重新安装gulp到3.91版
按gulp4.0.0重写gulpfile.js任务列表
把代码改成如下的样子就好了:
//构建任务
gulp.task('default',gulp.series('htmlmin','cssmin','jsmin','copy'));执行结果:

如果任务的名字是“default”,执行时可以省略default


随时随地看视频