Gulp與Grunt差不多,也是一款構建工具,它能夠自動執行我們前端常見的任務,
如編譯Sass、Less,壓縮js和重新整理瀏覽器等等,以此來改進前端的工作方式,提高生產力.
使用需用
安裝Node.js
由於Gulp是基於Node.js構建的,
所以在使用Gulp之前,首先安裝Node.js(自行搜尋node.js安裝),
安裝Node.js方式非常簡單,下載後執行安裝包,一直下一步即可,
安裝完成後開啟cmd控制檯(window)輸入 node-v 查詢版本號確認node安裝完畢。複製程式碼
初始化專案
讓當前目錄作為專案資料夾開始初始化,
專案初始化指令--> npm init 初始化完後會有一個package.json的檔案裡面是一些描述專案的一些記錄,
專案名稱、作者、開發時依賴的一些外掛,
不初始化也可以使用gulp。
package.json 說明
name //專案名稱
version //專案版本號
description //專案描述
homepage //專案官網url
author //作者名
contributors // 專案其他貢獻者
dependencies //專案依賴列表
devDependencies //開發環境依賴的列表
repository //專案程式碼存放的地方型別, git/svn
main //它是一個模組ID它是一個指向你程式的主要專案
keywords //關鍵字複製程式碼
安裝Gulp
在cmd控制檯下輸入命令進行安裝Gulp -g代表是全域性安裝
npm install -g gulp
全域性安裝後,要想在專案裡使用還得在專案的資料夾下,安裝本地gulp --save-dev會把外掛記錄記錄在package.json中。
npm install gulp -save-dev //在專案資料夾下使用
使用Gulp
在專案資料夾下建立一個 gulpfile.js 檔案,
然後在gulpfile.js中開始編寫gulp外掛,
gulp常用外掛 - - - - v
gulp-minify-css --- css壓縮
上面流程走完後安裝gulp-minify-css
npm install --save-dev gulp-minify-css
然後開始編寫 gulpfile.js檔案
var gulp = requrie('gulp'); // 引入gulp
var minify=require('gulp-minify-css');//引入壓縮css的模組
//建立一個壓縮任務
gulp.task('minifycss',function(){
//指定當前檔案下的所有字尾為.css的檔案
gulp.src('*.css')
//使用minify模組進行壓縮
.pipe(minify())
//最終將壓縮的檔案輸出到minicss檔案下
.pipe(gulp.dest('minicss'))
})複製程式碼
gulp-uglify --- js壓縮
以上為例安裝壓縮js的外掛
npm install --save-dev gulp-uglify
var gulp =require('gulp'); //引入gulp
var uglify = require('gulp-uglify');//引入js壓縮模組
//建立一個壓縮js的任務
gulp.task('minifyjs',function(){
//指定當前資料夾下的所有JS檔案
gulp.src('*.js')
//進行重新命名 可以設定名字為類似(mini.min.js)
.pipe(rename({suffix:'.min'}))
//進行壓縮
.pipe(uglify())
//將壓縮後的檔案輸出到minijs資料夾下
.pipe(gulp.dest('minijs'))
})複製程式碼
gulp-minify-html --- html壓縮
以上為例安裝壓縮html的外掛
npm install --save-dev gulp-minify-html
var gulp =require('gulp'); //引入gulp
var minhtml =require('gulp-minify-html');//引入js壓縮模組
//建立一個壓縮html的任務
gulp.task('minhtml',function(){
//指定當前資料夾下的所有html檔案
gulp.src('*.html')
//進行壓縮
.pipe(minhtml())
//將壓縮後的檔案輸出到minihtml資料夾下
.pipe(gulp.dest('minihtml'))
})複製程式碼
gulp-jshint --- 檢查js
以上為例安裝檢測js的外掛
npm install --save-dev jshint gulp-jshint
var gulp =require('gulp'); //引入gulp
var concat = require('gulp-jshint');//引入檢測js檔案模組
//建立一個檢測js的任務
gulp.task('concat',function(){
//指明要檢測的檔案
gulp.src('*.js')
.pipe(jshint())
//輸出檢查結果
.pipe(jshint.reporter());
})複製程式碼
gulp-concat --- 檔案合併
以上為例安裝檔案合併的外掛
npm install --save-dev gulp-concat
var gulp =require('gulp'); //引入gulp
var concat = require('gulp-concat');//引入合併檔案模組
//建立一個合併任務
gulp.task('concat',function(){
//指明要合併的檔案
gulp.src('*.js')
//合併找到的js檔案並命名為'merge.js'
.pipe(concat('merge.js'))
//將合併後的檔案輸出到concat資料夾下
.pipe(gulp.dest('concat'));
})複製程式碼
gulp-less --- 編譯Less
以上為例安裝編譯Less的外掛
npm install --save-dev gulp-less
var gulp =require('gulp'); //引入gulp
var lecss = require('gulp-less');//引入編譯模組
//建立一個編譯任務
gulp.task('compile-less',function(){
//指明要編譯的檔案
gulp.src('*.less')
//進行編譯
.pipe(lecss())
//將編譯後的檔案輸出到css資料夾下
.pipe(gulp.dest('css'));
})複製程式碼
gulp-sass --- 編譯Sass
以上為例安裝編譯Sass的外掛
npm install --save-dev gulp-sass
var gulp =require('gulp'); //引入gulp
var sacss = require('gulp-sass');//引入編譯模組
//建立一個編譯任務
gulp.task('compile-sass',function(){
//指明要編譯的檔案
gulp.src('*.sass')
//進行編譯
.pipe(sacss())
//將編譯後的檔案輸出到css資料夾下
.pipe(gulp.dest('css'));
})複製程式碼
gulp-imagemin --- 壓縮圖片
以上為例安裝壓縮圖片外掛
npm install --save-dev gulp-imagemin
var gulp =require('gulp'); //引入gulp
var imagemin = require('gulp-imagemin');
//建立一個壓縮任務
gulp.task('pngquant',function(){
gulp.src('src/*.{png,jpg,gif,ico}')
.pipe(imagemin({
progressive:true,//Boolean型別 預設:false 無失真壓縮圖片
optimizationLevel:5,//number型別 預設:3 取值範圍:0-7(優化等級)
interlced:true,//Boolean型別 預設false 隔行掃描gif進行渲染
multipass:true //Boolean型別 預設false 多次優化svg直到完全優化
//開始壓縮png圖片
}))
.pipe(gulp.dest('img'))
})複製程式碼
gulp-livereload --- 自動重新整理
以上為例安裝自動重新整理的外掛
npm install --save-dev gulp-livereload
當程式碼變化時可以幫助我們自動重新整理頁面。
// 基本使用(當less發現變化的時候自動更新頁面)
var gulp = require('gulp'),
less = require('gulp-less'),
livereload = require('gulp-livereload');
gulp.task('less', function() {
gulp.src('src/less/*.less')
.pipe(less())
.pipe(gulp.dest('src/css'))
.pipe(livereload());
});
gulp.task('watch', function() {
livereload.listen(); //要在這裡呼叫listen()方法
gulp.watch('less/*.less', ['less']); //監聽目錄下的檔案,若檔案發生變化,則呼叫less任務。
});複製程式碼
谷歌瀏覽器或者火狐瀏覽器需要安裝livereload外掛