构建工具-Gulp快速入门

本文介绍了Gulp的基本概念,作为一款与Grunt类似的前端构建工具,Gulp以其高效和易用性脱颖而出。通过实例详细讲解了如何配置Gulpfile.js,实现JS、LESS、CSS的合并、压缩、重命名,以及HTML的压缩。此外,还探讨了Gulp的默认任务和并行任务执行方式,以及监听文件变化的功能,帮助开发者提升工作效率。
摘要由CSDN通过智能技术生成

一、Gulp简单介绍

中文地址:

Gulp中文官网

Gulp简介:

它是一个于grunt功能类似的前端项目构建工具,也是基于nodejs的自动任务运行器,能自动化完成js/coffee/css/sass/less/html/image等文件的合并、压缩、检查、监听文件变化、浏览器自动刷新、测试等任务,它相比于grunt更高效(异步多任务),更易于使用,插件高质量

Gulp使用:

使用前,当然也是要确认nodejs是否安装

node -v

全局下载gulp

npm i -g gulp

局部下载gulp

npm i gulp --save-dev

接下来我们新建一个项目文件gulp_test,创建如下文件目录
在这里插入图片描述
1、我们先来看下js的合并、压缩、重命名

首先需要下载相关插件(gulp-concat ,gulp-uglify,gulp-rename,gulp-cli)

npm i gulp-concat gulp-uglify gulp-rename gulp-cli --save-dev

其次来配置下gulpfile.js配置文件

var gulp   =require("gulp");  //引入gulp对象
var concat =require("gulp-concat"); //引入对应插件,这里引入的concat是函数
var uglify =require("gulp-uglify");
var rename =require("gulp-rename");

gulp.task("js",function(){
	return gulp.src('src/js/*.js')    //找到目标源文件,将数据读取到gulp的内存中
	.pipe(concat('build.js'))    //concat()里指定合并后的文件名
	.pipe(gulp.dest('./dist/js/'))  //临时输出合并后的文件到本地,这里指定输出路径
	.pipe(uglify())     			//压缩
	.pipe(rename({suffix:".min"}))    //重命名
	.pipe(gulp.dest('./dist/js/'))    //最终输出
})

gulp.task('default',function(){   //注册默认任务
	
}) 

执行对应任务:gulp 指定任务名,在这里我们直接:gulp js即可
在这里插入图片描述
看到dist目录下有生成js目录及相关两个文件(build.js、build.min.js)就说明配置正确

2、less文件处理(gulp-less)

下载对应插件gulp-less

npm i gulp-less --save-dev

在src/less下新建一个test3.less文件

@coloe1: "red";   //用less变量的语法来区分css

.div1{
	height: 100px;
	width: 100px;
	background-color: @coloe1;   //引用变量
}

修改gulpfile.js文件

var gulp   =require("gulp");  //引入gulp对象
var concat =require("gulp-concat"); //引入对应插件,这里引入的concat是函数
var uglify =require("gulp-uglify");
var rename =require("gulp-rename");
var less =require("gulp-less");    //引入gulp-less插件

gulp.task("js",function(){
	return gulp.src('src/js/*.js')    //找到目标源文件,将数据读取到gulp的内存中
	.pipe(concat('build.js'))    //concat()里指定合并后的文件名
	.pipe(gulp.dest('./dist/js/'))  //临时输出合并后的文件到本地,这里指定输出路径
	.pipe(uglify())     			//压缩
	.pipe(rename({suffix:".min"}))    //重命名
	.pipe(gulp.dest('./dist/js/'))    //最终输出
})

//增加一条less文件处理任务
gulp.task("less",function(){
	return gulp.src('src/less/*.less')    //找到目标源文件,将数据读取到gulp的内存中
	.pipe(less())     //编译处理less文件
	.pipe(gulp.dest('./src/css/'))    //将处理后的css文件输出到src目录下
})

gulp.task('default',function(){   //注册默认任务
	
}) 

执行 gulp less ,可以看到编译后的文件已经将less语法转成css了
在这里插入图片描述

3、css文件合并、压缩(gulp-concat+gulp-clean-css)

下载对应插件gulp-clean-css

npm i gulp-clean-css --save-dev

再在src/css文件夹中新建两个样式文件,刚才我们把less编译后的css文件也放到了这个文件下,就是未了这一步我们将三个文件进行合并、压缩

//test1.css

.div1{
	color: aqua;
}

//test2.css

.div1{
	font-size: 20px;
}

然后修改gulpfile配置文件,新增css合并压缩任务

var gulp   =require("gulp");  //引入gulp对象
var concat =require("gulp-concat"); 
var uglify =require("gulp-uglify");
var rename =require("gulp-rename");
var less =require("gulp-less");
var cssClean =require("gulp-clean-css");  //引入css压缩插件

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


gulp.task("less",function(){
	return gulp.src('src/less/*.less')    
	.pipe(less())
	.pipe(gulp.dest('./src/css/'))

})

gulp.task("css",function(){     //css文件合并、压缩任务
	return gulp.src('src/css/*.css')
	.pipe(concat('build.css'))
	.pipe(rename('build.min.css'))
	.pipe(cssClean({suffix:".min"}))
	.pipe(gulp.dest('dist/css/'))
})

gulp.task('default',function(){   //注册默认任务
	
}) 

执行gulp css,可以看到dist目录下有css和build.min.css文件输出,可以看到已经把那三个css文件的样式内容合并到了一起,并做了压缩
在这里插入图片描述
然后我们可以在html中引入下合并压缩后的css文件,看下样式是否正常生效
在这里插入图片描述
4、使用默认任务,对多个任务集中处理

gulp.task('default',gulp.series("js","less","css"))  //同步执行任务

这样配置好后,执行gulp,可以看到控制台输出界面如下:
在这里插入图片描述

个人理解:这应该是同步地去执行任务

查看官网api,发现还有一个方法叫parallel(),它同样也是对多任务进行集中处理的,它的效果就是异步处理多个任务
在这里插入图片描述

5、html压缩

下载插件:npm i gulp-htmlmin --save-dev

修改gulpfile配置文件,新增html压缩任务,并添加到默认任务中

var htmlMin = require("gulp-htmlmin"); //引入插件

//注册html压缩任务
gulp.task("htmlmin",function(){
	return gulp.src('index.html')
	.pipe(htmlMin({collapseWhitespace:true}))  //除去空格
	.pipe(gulp.dest('dist/'))
})

gulp.task('default',gulp.parallel("js","less","css","htmlmin"))  //异步执行任务

配置ok后,直接执行gulp,可以看到如下界面
在这里插入图片描述

6、监听文件变化

下载插件:npm install --save-dev gulp-livereload

修改配置文件

var liveReload = require('gulp-livereload');  //引入插件

gulp.task("watch", function() {
  liveReload.listen();    //开启监听
  gulp.watch('src/css/*.css',gulp.series('css'));   //监听css/下面的css文件,有改变后执行css任务
});

配置完后执行:gulp watch(下图说明正在监听中)
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ronychen’s blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值