手记

gulp插件使用

一、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


1人推荐
随时随地看视频
慕课网APP