gulp 基本使用

gulp

官网链接

中文官网

gulp 是自动化构建工具,可以用来压缩文件,合并文件,编译less 编辑sass 等操作

入门


全局安装:



npm i gulp@3.9.1 -g



gulp -v # 测试是否安装成功



npm i gulp@3.9.1 --save-dev # 因为在上线后是不需要这个包的,所以将这个项目安装在开发依赖

  • 局部安装gulp要和全局安装的gulp版本保持一致

快速上手

ulp规定任务要写在一个叫做glupfile.js的文件中,在这个文件中用来配置所有任务。

  • 新建一个 glupfile.js文件

  • 新建一个gulp


// 这个gulp是一个对象,gulp提供了很多接口,都是这个对象的方法。

var glup=require("gulp");

// 注册任务

// ---> 任务名字 a  

//----> 任务做什么在函数中处理 ,注意回调函数中需要一个参数;



gulp.task("a",function(cb){

console.log("打印123");

// 说明任务执行完毕;如果没有会报错,但是不影响程序运行                    

cb()

})




常用api

  • gulp print() 作用相当于管道,传递文件或数据

  • gulp.src(globs[, options]) 方法主要是用来读取目标源文件,所以参数就是一个目标源文件的路径

  • gulp.dest(path[,options]) 用来将数据输出到文件中,所以参数就是目标文件路径

  • gulp.watch() 用来监视某个或某些文件发生变化,可以在变化的时候,执行一个回掉函数,以保证文件中的代码和效果一致

开始

  • 准备工作:

  • 新建一个gulp 文件;

  • 初始化文件 npm init 安装依赖项

  • 在gulp 下新建 build 文件夹 作用gulp 输出目录

  • 新建Index.js 等文件作为模拟项目开发文件

  • 新建glupfile.js 文件为 gulp 配置文件

  • 实现一个基本的复制文件效果


var gulp = require('gulp');



// 定义一个任务a

gulp.tast('a',function(cb){

// 读取index.js 文件; 

// pipe 传递index.js 文件

// 添加到 build文件  

gulp.src('index.js').pipe(gulp.dist('./build'))

cb();

})

  • 实现压缩文件

  • 安装 npm i gulp-uglify --save


var gulp = require('gulp');

var uglify = require('gulp-uglify');




// 定义一个任务a

gulp.tast('a',function(cb){

// 将读取的文件;传递给uglify() 进行压缩;将压缩结果 传递 build文件保存

gulp.src('index.js').pipe(uglify()).pipe(gulp.dist('./build'))// 说明任务执行完毕

cb();

})



// 运行 gulp a

  • 实现一个实时压缩功能

  • 在gulp文件夹下新建一个Index.txt文件;代码写好后,可以通过修改Index.txt文件中内容测试


var uglify = require('gulp-uglify');

var gulp = require('gulp');




// 定义一个任务a

gulp.tast('a',function(cb){

// 将读取的文件;传递给uglify() 进行压缩;将压缩结果 传递 build文件保存

gulp.src('index.text').pipe(uglify()).pipe(gulp.dist('./build'))// 说明任务执行完毕

cb();

})

gulp.tast('start',function(cb){

// 监听文件index.text变化;并执行a 参二也可以是异步回调函数。这是没用函数

gulp.watch('index.txt',['a'])

cb();

})



  • 实现一个对文件配置

var gulp = require('gulp');



gulp.tast('a',function(cb){

// 表示匹配当前目录下所有文件

gulp.src('*.*').pipe(gulp.dist('./build'))cb();

})

文件匹配
  • 实现合并文件压缩文件

  • 安装 npm i gulp-concat --save

  • 新建 concat文件夹;再创建一些 js 文件

  • 在build下新建js文件


var gulp = require('gulp');

var concat = require('gulp-concat');

var uglify = require('gulp-uglify');



// 先压缩 后合并

gulp.tast('uglify',['concat'],function(cb){

// 表示匹配当前目录  concat 文件下所有js文件;进行合并到index.js文件中;在压缩;最后放在 build/js下

gulp.src('concat/*.js').pipe(uglify()).pipe(gulp.dist('./build/js'))cb();

})



gulp.tast('concat',function(cb){

// 表示匹配当前目录  concat 文件下所有js文件;进行合并到index.js文件中;在压缩;最后放在 build/js下

gulp.src('concat/*.js').pipe(concat('index.js')).pipe(uglify()).pipe(gulp.dist('./build/js'))cb();

})




  • 实现 文件重命名

  • 安装 npm i gulp-rename --save


var gulp = require('gulp');

var concat = require('gulp-concat');

var uglify = require('gulp-uglify');



var rename = require('gulp-rename')

// 定义一个任务a

gulp.tast('uglify',['concat'],function(cb){

gulp.src('concat/*.js').pipe(uglify()).pipe(rename({suffix:".min"})).pipe(gulp.dist('./build/js'))

cb();

})



// 方式2 写法不同

gulp.tast('concat',function(cb){

// 表示匹配当前目录  concat 文件下所有js文件;进行合并到index.js文件中;在压缩;最后放在 build/js下

gulp.src('concat/*.js').pipe(concat('index.js')).pipe(rename({suffix:".min"})).pipe(uglify()).pipe(gulp.dist('./build/js'))cb();

})

编译sass

准备工作:

  • 安装 npm i gulp-sass node-sass --save

var gulp = require('gulp');

var sass= require('gulp-sass');

gulp.task('default',function(cd){

gulp.src('myapp/sass/index.scss')

// 编译sass

.pipe(sass())

.pipe(gulp.dest('myapp/css'))

cb()

})

gulp 有利于前端性能优化–

  • 压缩 css js 文件

  • 减少http 请求次数 (合并文件;get请求)

  • get 请求;浏览器可以缓存,对于相同请求浏览器会检测到使用缓存

  • 问题;不是实时更新数据;解决方式:使用 时间戳

  • 减少服务器压力:使用懒加载 cdn加速(花钱)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值