項目構建工具 - gulp

一威酒、項目構建

  • 多個開發(fā)者共同開發(fā)一個項目煌恢,每位開發(fā)者負責不同的模塊骗卜,這就會造成一個完整的項目實際上是由許多的“代碼版段”組成的宠页;
  • 使用less、sass等一些預處理程序寇仓,降低CSS的維護成本勇皇,最終需要將這些預處理程序進行解析;
  • 合并css焚刺、javascript,壓縮html门烂、css乳愉、javascript兄淫、images可以加速網頁打開速度,提升性能蔓姚;
  • 這一系列的任務完全靠手動完成幾乎是不可能的捕虽,借助構建工具可以輕松實現。
  • 所謂構建工具是指通過簡單配置就可以幫我們實現合并坡脐、壓縮泄私、校驗、預處理等一系列任務的軟件工具备闲。
  • 常見的構建工具包括:Grunt晌端、Gulp、F.I.S(百度出品)恬砂、webpack

二咧纠、gulp

Gulp是基于Nodejs開發(fā)的一個構建工具,借助gulp插件可以實現不同的構建任務泻骤,以其簡潔的配置和卓越的性能成為目前主流的構建工具漆羔。

全局安裝 npm install -g gulp

2.1 gulp基礎

  1. 本地安裝gulp

    進入項目根目錄執(zhí)行npm install gulp --save-dev(添加--save-dev會在package.json記錄依賴關系)。

  2. 任務清單

    在項目根目錄中創(chuàng)建gulpfile.js(這是一個配置文件)

  3. 定義任務

    在gulpfile.js定義構建任務狱掂,如壓縮演痒、合并,Gulp自身并不執(zhí)行任何任務趋惨,是通過調用具體插件來完成的鸟顺。

    以編譯LESS為例,安裝npm install gulp-less希柿,如下圖定義任務

    //引入gulp
    var gulp = require('gulp'),
        //引入編譯less的插件
        less = require('gulp-less');
    gulp.task('less', function () {
        return gulp.src('./public/less/*.less')
            .pipe(less())
            .pipe(gulp.dest('./release/public/css'))
    });
    
  4. 執(zhí)行任務

    輸入命令 gulp less

    這樣我們的LESS文件便會編譯成CSS了诊沪。

2.2 gulp工作原理

通過不同的插件實現構建任務,Gulp只是按著配置文件調用執(zhí)行了這些插件曾撤。

2.3 gulp API

Gulp是基于NodeJS的端姚,通過require可以引入一個NodeJS的包(模塊),其作用類似于瀏覽器中的script標簽引入資源挤悉,被引入的包存放在node_modules目錄下渐裸。

引入gulp包(模塊)后返回一個對象,習慣賦值給變量gulp装悲,通過該對象提供的方法(API)完成任務配置昏鹃。

  • gulp.task() 定義各種不同的任務,如下圖有兩個參數

    //less任務名稱诀诊,回調方法里定義任務
    gulp.task('less',function(){
      //定義任務
    });
    

    不同任務間存在依賴關系時洞渤,可以指定依賴,如下

    //通過數組指定有依賴關系的任務
    gulp.task('less',['依賴1','依賴2','依賴3'],function(){
      //定義任務
    });
    
  • gulp.src() 需要構建資源的路徑属瓣,字符串或數組(可以正則方式書寫)

  • gulp.pipe() 管道载迄,將需要構建的資源“輸送”給插件讯柔。

  • gulp.dest() 構建任務完成后資源存放的路徑(會自動創(chuàng)建)

    gulp.task('less',function(){
      gulp.src('./pubilc/less/*.less')
          .pipe(less())
          .pipe(gulp.dest('./public/css'));
    })
    
  • gulp.watch()

2.4 常用gulp插件

  • gulp-less 編譯LESS文件
  • gulp-autoprefixer 添加CSS私有前綴
  • gulp-cssmin 壓縮CSS
  • gulp-rname重命名
  • gulp-imagemin 圖片壓縮
  • gulp-uglify 壓縮Javascript
  • gulp-concat 合并
  • gulp-useref
  • gulp-if
  • gulp-htmlmin 壓縮HTML
  • gulp-rev添加版本號
  • gulp-rev-collector內容替換
  • gulp-clean清除內容
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市护昧,隨后出現的幾起案子魂迄,更是在濱河造成了極大的恐慌,老刑警劉巖惋耙,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捣炬,死亡現場離奇詭異,居然都是意外死亡绽榛,警方通過查閱死者的電腦和手機湿酸,發(fā)現死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蒜田,“玉大人稿械,你說我怎么就攤上這事〕逶粒” “怎么了美莫?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長梯捕。 經常有香客問我厢呵,道長,這世上最難降的妖魔是什么傀顾? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任襟铭,我火速辦了婚禮,結果婚禮上短曾,老公的妹妹穿的比我還像新娘寒砖。我一直安慰自己,他們只是感情好嫉拐,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布哩都。 她就那樣靜靜地躺著,像睡著了一般婉徘。 火紅的嫁衣襯著肌膚如雪漠嵌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天盖呼,我揣著相機與錄音儒鹿,去河邊找鬼。 笑死几晤,一個胖子當著我的面吹牛约炎,可吹牛的內容都是我干的。 我是一名探鬼主播蟹瘾,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼章钾,長吁一口氣:“原來是場噩夢啊……” “哼墙贱!你這毒婦竟也來了?” 一聲冷哼從身側響起贱傀,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伊脓,沒想到半個月后府寒,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡报腔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年株搔,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纯蛾。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡纤房,死狀恐怖,靈堂內的尸體忽然破棺而出翻诉,到底是詐尸還是另有隱情炮姨,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布碰煌,位于F島的核電站舒岸,受9級特大地震影響,放射性物質發(fā)生泄漏芦圾。R本人自食惡果不足惜蛾派,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望个少。 院中可真熱鬧洪乍,春花似錦、人聲如沸夜焦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糊探。三九已至钾埂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間科平,已是汗流浹背褥紫。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瞪慧,地道東北人髓考。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像弃酌,于是被迫代替她去往敵國和親氨菇。 傳聞我的和親對象是個殘疾皇子儡炼,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內容

  • gulpjs是一個前端構建工具,與gruntjs相比查蓉,gulpjs無需寫一大堆繁雜的配置參數乌询,API也非常簡單,學...
    依依玖玥閱讀 3,149評論 7 55
  • gulpjs是一個前端構建工具豌研,與gruntjs相比妹田,gulpjs無需寫一大堆繁雜的配置參數,API也非常簡單鹃共,學...
    井皮皮閱讀 1,292評論 0 10
  • gulpjs是一個前端構建工具鬼佣,與gruntjs相比,gulpjs無需寫一大堆繁雜的配置參數霜浴,API也非常簡單晶衷,學...
    小裁縫sun閱讀 922評論 0 3
  • 在現在的前端開發(fā)中,前后端分離阴孟、模塊化開發(fā)晌纫、版本控制、文件合并與壓縮温眉、mock數據等等一些原本后端的思想開始...
    Charlot閱讀 5,433評論 1 32
  • gulpjs是一個前端構建工具缸匪,與gruntjs相比,gulpjs無需寫一大堆繁雜的配置參數类溢,API也非常簡單凌蔬,學...
    build1024閱讀 527評論 0 0