使用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 

 

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