gulp知識

圖片來源網(wǎng)絡(luò)

Gulp基于Node.js的自動化構(gòu)建工具

Gulp運行效率比Grunt高瓦呼,相比之下更有設(shè)計感

新建項目

在新建項目之前敬矩,電腦中需要安裝全局的gulp插件蛋铆,然后就可以在指定的項目文件中新建gulp項目了娜膘。

npm install -g gulp-cli

文件夾下-打開終端

npm init - 輸入項目名稱等信息

(頁面中所有引入的js和css都是引用dest文件夾下的壓縮文件痕届。)

處理CSS

npm install -? (查看group install的命令)

安裝css預(yù)處理的五個插件:gulp衡瓶,gulp-sass徘公,gulp-concat,gulp-minify-css哮针,gulp-sourcemaps)

npm install --save-dev gulp gulp-sass gulp-concat gulp-minify-css gulp-sourcemaps

如果需要查看項目安裝的所有插件关面,可以在package.json中的devDependencies中看到。

這需要安裝插件的時候使用save-dev命令十厢。

本項目中目前為止安裝的插件如下:

安裝的插件

安裝全局gulp插件

npm install -g gulp-cli

安裝一個公用指令

項目根目錄下新建gulpfile.js文件

在gulpfile.js文件中需要引用所有的插件等太,然后根據(jù)需要執(zhí)行的操作新建任務(wù)。

現(xiàn)在需要壓縮所有.scss文件蛮放,代碼如下:

壓縮.scss文件

然后在命令行執(zhí)行g(shù)ulp style缩抡,就可以看到所有文件已經(jīng)轉(zhuǎn)移到了dest文件夾下:

文件轉(zhuǎn)移

說明我們的項目是完全可以執(zhí)行的。

然而我們需要的肯定不是單純的文件轉(zhuǎn)移筛武,我們需要對樣式文件進行編譯缝其。

項目目錄結(jié)構(gòu)舉例:

項目目錄結(jié)構(gòu)

gulp.src(files[,options])files:StringArray, 必填,需要處理的文件匹配符路徑options:Object徘六,選填内边,配置選項base:String,輸出路徑的基底位置buffer: Booleab待锈,設(shè)置gulp是否緩存文件漠其,在處理大文件時可提高效率read:Boolean,是否執(zhí)行文件讀取操作

通過對sass插件的引用var sass = require('gulp-sass')來對樣式進行編譯:

sass插件

經(jīng)過實驗竿音,在.pipe(sass())后面不能使用分號和屎;,不然程序會報錯春瞬。

編譯成功后柴信,就可以在dest文件夾下看到編譯后的樣式文件了,這里可以使用sass的語法來驗證編譯是否成功宽气。

同時随常,我們可以使用css-minify插件來格式化樣式

varcssminify =require('gulp-minify-css')

cssminify

系統(tǒng)會自動將css格式化,并將相同樣式的選擇器合并萄涯,例如:.index,.select{color:red}

鏈接JS

因為連接起來的js會有命名空間的混淆绪氛,所以這里要用到閉包。

通過自定義插件的方式來做一個匿名函數(shù)的包裹:

through2.obj.bufferContents每個文件處理時調(diào)用

through2.obj.endStream所有文件都處理完后來調(diào)用

插件

首先安裝through2插件

npm install --save-dev through2

通過定義bufferContents和endStream涝影,在任務(wù)中調(diào)用through.obj方法

調(diào)用

執(zhí)行g(shù)ulp script枣察,得到合并在一起的JS文件,并且每個JS的內(nèi)容都被包含在自己的作用域中。

閉包

要使合并后的JS有效序目,還需要編寫registJS函數(shù)臂痕。(編寫的registJS函數(shù)屬于自定義插件功能,也可以通過gulp自帶的插件gulp-insert來完成以上功能宛琅,這在后面會有提及)

registJS的內(nèi)容如下:

registJS

當(dāng)然刻蟹,通過插件gulp-insert可以直接完成閉包和registJS的功能逗旁。

步驟一樣是先安裝插件npm install --save-dev gulp-insert

在代碼中引用插件:var insert = require('gulp-insert')

然后改寫上面的代碼:

更改以后

gulp-insert使用stream類來才做文件對象嘿辟,比之前自定義的時候用buffer更好。

壓縮js

安裝gulp-uplify:npm install --save-dev gulp-uglify

引用插件:var uglify = require('gulp-uglify')

調(diào)用插件:.pipe(uglify())

gulp-uglify是在生產(chǎn)環(huán)境下的壓縮片效。

如果要在開發(fā)環(huán)境下壓縮的話红伦,需要使用另外一個插件browser-sync

安裝插件:npm install --save-dev browser-sync

引用插件:var browserSync = require('browser-sync').create();

為了舉例,我們新建一個開發(fā)環(huán)境下的任務(wù)default:dev:

gulp.task('default:dev',['script:dev','style:dev'],function(){? ? browserSync.init({server:{baseDir:'./'//新建一個server},open:false//防止代碼運行時淀衣,瀏覽器自動打開一個頁面})})

但是這時候的css和js都是已經(jīng)壓縮的昙读,需要安裝插件gulp-sourcemaps。

安裝插件:npm install --save-dev gulp-sourcemaps

復(fù)制原先的style和script任務(wù)膨桥,把人物名稱分別改為:style:dev和script:dev蛮浑,同時把default:dev的依賴也改成對應(yīng)的名字['script:dev','style:dev']。

style:dev如下:

style:dev

*注意:在:dev環(huán)境下不能使用cssminify()

script:dev如下:

script:dev

運行default:dev任務(wù)后就會在控制臺source頁面看到?jīng)]有壓縮的css和js供開發(fā)人員調(diào)試只嚣。

后期研究:unit test框架核心功能的單獨調(diào)試

Watch功能

在default:dev任務(wù)中添加兩行watch的代碼:

gulp.watch('scriptPath',['script:dev']); //scriptPath在本項目中為:./script/**/*.js沮稚,[ ]中的是需要執(zhí)行的任務(wù)名稱,中括號不能刪除

gulp.watch('stylePath',['style:dev']); //stylePath在本項目中為:./style/**/*.scss,[ ]中的是需要執(zhí)行的任務(wù)名稱,中括號不能刪除

同時在script:dev和style:dev兩個任務(wù)中添加一行代碼:

.pipe(browserSync.stream());//同步瀏覽器

完成后在命令行啟動任務(wù)default:dev:

gulpdefault:dev

這時册舞,在樣式文件中修改的內(nèi)容一旦保存可以直接在顯示器顯示渲染效果蕴掏,無需刷新瀏覽器,這就是watch的功能调鲸。

注:以上所有內(nèi)容都是本人的學(xué)習(xí)筆記和總結(jié)盛杰,僅供學(xué)習(xí)和參考,如果有遺漏或者不當(dāng)?shù)牡胤秸堈徑饷晔埼疝D(zhuǎn)載即供。

作者:anMoo韓魔

鏈接:http://www.reibang.com/p/a02e2d7e5fec

來源:簡書

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)于微,非商業(yè)轉(zhuǎn)載請注明出處逗嫡。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市角雷,隨后出現(xiàn)的幾起案子祸穷,更是在濱河造成了極大的恐慌,老刑警劉巖勺三,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雷滚,死亡現(xiàn)場離奇詭異,居然都是意外死亡吗坚,警方通過查閱死者的電腦和手機祈远,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門呆万,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人车份,你說我怎么就攤上這事谋减。” “怎么了扫沼?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵出爹,是天一觀的道長。 經(jīng)常有香客問我缎除,道長严就,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任器罐,我火速辦了婚禮梢为,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘轰坊。我一直安慰自己铸董,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布肴沫。 她就那樣靜靜地躺著粟害,像睡著了一般。 火紅的嫁衣襯著肌膚如雪樊零。 梳的紋絲不亂的頭發(fā)上我磁,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天,我揣著相機與錄音驻襟,去河邊找鬼夺艰。 笑死,一個胖子當(dāng)著我的面吹牛沉衣,可吹牛的內(nèi)容都是我干的郁副。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼豌习,長吁一口氣:“原來是場噩夢啊……” “哼存谎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起肥隆,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤既荚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后栋艳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恰聘,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了晴叨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凿宾。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖兼蕊,靈堂內(nèi)的尸體忽然破棺而出初厚,到底是詐尸還是另有隱情,我是刑警寧澤孙技,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布产禾,位于F島的核電站,受9級特大地震影響绪杏,放射性物質(zhì)發(fā)生泄漏下愈。R本人自食惡果不足惜纽绍,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一蕾久、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拌夏,春花似錦僧著、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至站故,卻和暖如春皆怕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背西篓。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工愈腾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人岂津。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓虱黄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吮成。 傳聞我的和親對象是個殘疾皇子橱乱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容

  • gulpjs是一個前端構(gòu)建工具,與gruntjs相比粱甫,gulpjs無需寫一大堆繁雜的配置參數(shù)泳叠,API也非常簡單,學(xué)...
    依依玖玥閱讀 3,152評論 7 55
  • gulpjs是一個前端構(gòu)建工具茶宵,與gruntjs相比危纫,gulpjs無需寫一大堆繁雜的配置參數(shù),API也非常簡單,學(xué)...
    井皮皮閱讀 1,295評論 0 10
  • gulpjs是一個前端構(gòu)建工具叶摄,與gruntjs相比属韧,gulpjs無需寫一大堆繁雜的配置參數(shù),API也非常簡單蛤吓,學(xué)...
    小裁縫sun閱讀 927評論 0 3
  • gulpjs是一個前端構(gòu)建工具宵喂,與gruntjs相比,gulpjs無需寫一大堆繁雜的配置參數(shù)会傲,API也非常簡單锅棕,學(xué)...
    build1024閱讀 528評論 0 0
  • 在現(xiàn)在的前端開發(fā)中廊酣,前后端分離先煎、模塊化開發(fā)、版本控制憔购、文件合并與壓縮泼疑、mock數(shù)據(jù)等等一些原本后端的思想開始...
    Charlot閱讀 5,439評論 1 32