使用gulp自动化开发流程——gulp的安装和使用

目录

一、什么是gulp?为什么要用gulp?

二、gulp的安装

1.全局安装

2.本地安装

三、创建第一个任务

四、gulp的使用

1.压缩css、js 

2.合并文件

3.压缩图片

4.检测代码修改,自动刷新浏览器 

五、gulpfile.js的全部代码:


一、什么是gulp?为什么要用gulp?

gulp是一个自动化构建工具,主要用来设定程序自动处理静态资源的工作。简单的说,gulp就是用来打包项目的。因为项目中往往会包含很多图片、css\js\html 代码,而这些如果不压缩的话会给客户端加载时带来很大压力,所以需要gulp来压缩打包

二、gulp的安装

附上本地安装和全局安装的区别:https://www.cnblogs.com/qiangxia/p/5264720.html

1.全局安装

npm install gulp -g

2.本地安装

npm init命令可以使在命令行目录下生成一个package.json,里边包含了项目所用到的包,在别人使用项目的时候,就不用安装所有的包了,只需使用npm install 指令就可以安装package.json里边项目用到的包

使用方法:将目录切换到项目的目录中,输入npm init ,然后可以一直回车直接用默认值,也可以自己输入

最后在命令行目录下生成一个package.json文件

新建一个文件夹,文件夹名称即项目名称为gulpdemo,新建名称为css、js、html的文件

在gulpdemo目录下生成了一个package.json文件,在sublime中打开项目,打开package.json是这样的

--save-dev指令是将待安装的包添加到package.json里的依赖中,比如在安装gulp时,在项目目录中,执行此指令

npm install gulp --save-dev

三、创建第一个任务

再新建一个gulpfile.js,注意名称必须是gulpfile.js,要不然gulp执行不了。里边的内容如下,作用是在控制台输出helloword:

var gulp = require("gulp");

gulp.task("greet",function(done){
	console.log("helloword");
	done();
});

相当于指令greet即执行function函数输出helloword,在命令行中执行:

gulp greet

四、gulp的使用

1.压缩css、js 

共需要安装以下几种包,安装方式都是gulp install xxx --save-dev

处理css用到的包:gulp-cssnano

处理css的流程,在gulpfile.js里,定义这两个功能

修改处理后文件名字用到的包:gulp-rename

处理js用到包:gulp-uglify

gulp.task("css",function(){
	gulp.src("./css/*.css")               //读取css目录下,所有css类型的文件
	.pipe(cssnano())                       //用管道将读取的文件传给cssnano()
	.pipe(rename({"suffix":".min"}))       //需要安装gulp-rename,最后的文件就会是index.min.css
	.pipe(gulp.dest("./dist/css"))         //将处理后即压缩后的的css放到指定位置
});

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

});

2.合并文件

用npm下载gulp-concat

合并多个js文件夹下的.js文件,然后再进行压缩uglify

gulp.task("js",function(){
	gulp.src("/js/*.js")
	.pipe(concat("index.js"))   //合并多个文件到Index.js
	.pipe(uglify({
		'toplevel':true,       //将全局的变量名称压缩
		'compress':{
			'drop_console':true //取消控制台打印
		}
	}))
	.pipe(rename({"suffix":".min"}))
	.pipe(gulp.dest("./dist/js"))

});

3.压缩图片

gulp.task("images",function(){
	gulp.src("./images/*.*")      //因为图片格式众多,所以就所有格式都压缩
	.pipe(cache(imagemin()))      //执行压缩
	.pipe(gulp.dest("./dist/images"))
});

4.检测代码修改,自动刷新浏览器 

gulp.task("watch",function(){
	gulp.watch("./css/*.css",['css'])     //监听所有css文件,当有代码修改的时候,就执行css任务,自动的将修改的文件存储到css任务最后存储的文件

这个方法需要先执行watch任务,才会监听,也可以用npm下载browser-sync,使其实时刷新

gulp.task("bs",function(){
	bs.init({
		'server': {
			'baseDir':'./'               //指定服务器开始的根目录
		}
	})
});

gulp.task("server",['bs','watch']);
//gulp.task("default",['bs','watch']);——只要在命令行中输入gulp就自动的执行这个任务

然后再在需要监听的任务后边加上 .pipe(bs.stream())   

 

五、gulpfile.js的全部代码:

注意开头的注册是需要提前把包下载下来的。

var gulp = require("gulp");
var cssnano = require("gulp-cssnano"); //处理css文件
var rename = require("gulp-rename");   //将处理后的文件重命名
var uglify = require("gulp-uglify");   //处理js文件
var concat = require("gulp-concat");   //合并两个文件,未下载下来Not found:gulp-concant
var cache = require("gulp-cache");
var imagemin = require("gulp-imagemin");//压缩图片
var bs = require("browser-sync").create() //创建一个用来刷新浏览器的服务器

gulp.task("greet",function(done){
	console.log("helloword");
	done();
});

gulp.task("css",function(){
	gulp.src("./css/*.css")               //读取css目录下,所有css类型的文件
	.pipe(cssnano())                       //用管道将读取的文件传给cssnano()
	.pipe(rename({"suffix":".min"}))       //需要安装gulp-rename,最后的文件就会是index.min.css
	.pipe(gulp.dest("./dist/css"))         //des是存储到指定位置的api,即将处理后即压缩后的的css放到指定位置
	.pipe(bs.stream())                     //设置修改css代码可以实时刷新浏览器                    
});

gulp.task("js",function(){
	gulp.src("/js/*.js")
	.pipe(concat("index.js"))   //合并多个文件到Index.js
	.pipe(uglify({
		'toplevel':true,       //将全局的变量名称压缩
		'compress':{
			'drop_console':true //取消控制台打印
		}
	}))
	.pipe(rename({"suffix":".min"}))
	.pipe(gulp.dest("./dist/js"))

});

gulp.task("images",function(){
	gulp.src("./images/*.*")      //因为图片格式众多,所以就所有格式都压缩
	.pipe(cache(imagemin()))      //执行压缩
	.pipe(gulp.dest("./dist/images"))
});

gulp.task("watch",function(){
	gulp.watch("./css/*.css",['css'])     //监听所有css文件,当有代码修改的时候,就执行css任务,

});

gulp.task("bs",function(){
	bs.init({
		'server': {
			'baseDir':'./'               //指定服务器开始的根目录
		}
	})
});

gulp.task("server",['bs','watch']);
//gulp.task("default",['bs','watch']);——只要在命令行中输入gulp就自动的执行这个任务

gulp的开发文档和api:https://www.gulpjs.com.cn/docs/getting-started/creating-tasks/

参考教程:https://www.bilibili.com/video/BV1AE411477J?p=192 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章