gulp

gulp

基于node平台开发的前端构建工具
将机械化操作编写成任务, 想要执行机械化操作时执行一个命令行命令任务就能自动执行了
用机器代替手工,提高开发效率。

gulp 能做什么

  • 项目上线,HTML、CSS、JS文件压缩合并
  • 语法转换(es6、less …)
  • 公共文件抽离
  • 修改文件浏览器自动刷新

gulp 使用

1.使用npm install gulp下载gulp库文件
2.在项目根目录下建立gulpfile.js文件
3.重构项目的文件夹结构 src目录放置源代码文件 dist目录放置构建后文件
4.在gulpfile.js文件中编写任务.
5.在命令行工具中执行gulp任务(npm install gulp-cli)

gulp 中提供的方法

  • gulp.src():获取任务要处理的文件
  • gulp.dest():输出文件
  • gulp.task():建立gulp任务
  • gulp.watch():监控文件的变化
const gulp = require('gulp');
  // 使用gulp.task()方法建立任务
 gulp.task('first', () => {
    // 获取要处理的文件
    gulp.src('./src/css/base.css') 
    // 将处理后的文件输出到dist目录
    .pipe(gulp.dest('./dist/css'));
 });

gulp 插件

npm install

  • gulp-htmlmin :html文件压缩
    https://www.npmjs.com/package/gulp-htmlmin

  • gulp-csso :压缩css
    https://www.npmjs.com/package/gulp-csso

  • gulp-less: less语法转化
    https://www.npmjs.com/package/gulp-less

  • gulp-babel :JavaScript语法转化
    https://www.npmjs.com/package/gulp-babel

  • gulp-uglify :压缩混淆JavaScript

  • gulp-file-include 公共文件包含
    https://www.npmjs.com/package/gulp-file-include

  • browsersync 浏览器实时同步

gulpfile.js 文件

//引用gulp模块
const gulp = require('gulp');
const htmlmin = require('gulp-htmlmin');
const fileinclude = require('gulp-file-include');
var less = require('gulp-less');
var csso = require('gulp-csso');
const babel = require('gulp-babel');
const uglify = require('gulp-uglify');

// 使用gulp.task建立任务
// 1.任务的名称
// 2.任务的回调函数
gulp.task('first', done=> {
  console.log('第一个gulp任务');
  //获取要处理的文件
  gulp.src('./src/css/base.css')
      .pipe(gulp.dest('./dist/css'))
  done();
});
//注意:gulp4.0版本使用task时,回调函数使用匿名函数带来的问题,gulpgulp不再支持同步任务
//最简答的解决方法就是添加回调函数(callback),来指示函数的完成
//这里我不知道为什么写 done,其它名字也可以
//https://www.gulpjs.com.cn/docs/getting-started/async-completion/



gulp.task('htmlmin', done=> {
  gulp.src('./src/*.html')
    //抽取html文件中的公共代码,感觉有点类似vue中的组价
    .pipe(fileinclude())
    //压缩html文件中的代码
    .pipe(htmlmin({collapseWhitespace: true}))
    .pipe(gulp.dest('./dist'));
  done();
});

//less语法的转换和css代码的压缩
gulp.task('cssmin', done=> {
  gulp.src(['./src/css/*less', './src/css/*css'])
  .pipe(less())
  .pipe(csso())
  .pipe(gulp.dest('./dist/css'))
  done();
});

//es6代码转换以及代码的压缩
gulp.task('jsmin', done=> {
  gulp.src('./src/js/*.js')
    .pipe(babel({
      //可以判断当前代码的运行环境,并将代码转换到当前环境所支持的代码
      presets: ['@babel/env']
    }))
    .pipe(uglify())
    .pipe(gulp.dest('./dist/js'))
  done();
});


//复制其它的文件夹
gulp.task('copy', done=> {
  //选择时
  // * 代表光选中当前文件夹里的文件,
  //如果当前文件夹里面还有文件夹(a),则无法选中a文件夹里的文件
  //** 可以选中
  
  gulp.src('./src/images/*')
    .pipe(gulp.dest('./dist/images'))
  gulp.src('./src/lib/**')
    .pipe(gulp.dest('./dist/lib'))

  gulp.src('./src/a/**')
    .pipe(gulp.dest('./dist/a'))
  done();
});

// gulp.series:按照顺序执行
// gulp.paralle:可以并行计算
//当使用 series() 组合多个任务(task)时,任何一个任务(task)的错误将导致整个任务组合结束,并且不会进一步执行其他任务。
//当使用 parallel() 组合多个任务(task)时,一个任务的错误将结束整个任务组合的结束,但是其他并行的任务(task)可能会执行完,也可能没有执行完
gulp.task('default', gulp.series('htmlmin', 'cssmin', 'jsmin', 'copy', done=>{
  done();
}));

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值