gulp之插件、監(jiān)控、api使用

一、gulp插件的使用

? ? |--插件的實(shí)質(zhì):gulp插件的實(shí)質(zhì)是Node轉(zhuǎn)換流,它封裝了-通過管道(pipeline)轉(zhuǎn)換文件的常見功能。
? ? |--使用方法:使用.pipe()方法,放在.src()和dest()之間,他們可以更改經(jīng)過流的每一個(gè)文件的文件名、
? ? 元數(shù)據(jù)或文件內(nèi)容。
? ? |--gulp的插件有很多,可在npm進(jìn)行查找,每一個(gè)插件只完成指定的工作,可以把很多插件組合一起使用。
? ? |--安裝插件:npm install --save-dev 插件名
? ? |--示例1:
? ? ? ? |--安裝插件:壓縮文件(gulp-uglify)和文件重命名(gulp-rename)插件

安裝壓縮文件插件
安裝重命名插件
package.json

? ? ? ? |--壓縮指定js文件,并將壓縮和修改擴(kuò)展名后的js文件存放在指定文件夾下:

壓縮一個(gè)自己封裝的ajax.js文件
報(bào)錯(cuò)!!!!!!why

? ? ? ? |--看看我要壓縮的文件ajax.js,為什么要弄一個(gè)錯(cuò)誤案例,因?yàn)樯婕暗搅硪粋€(gè)插件,就順便解決一下。

ajax.js

? ? ? ? |--因?yàn)樵趀s5環(huán)境中用到了es6或es7語法,就會(huì)報(bào)錯(cuò),安裝插件babel模塊,進(jìn)行解決。

安裝babel模塊
修改后的gulpfile.js

? ? ? ? |--執(zhí)行g(shù)ulp命令,結(jié)果:

壓縮、重命擴(kuò)展名成功!

? ? |--示例2:條件插件gulp-if,作用是因?yàn)椴寮牟僮鞑粦?yīng)該針對特定文件類型,因此你可能需要使用像
? ? gulp-if插件來完成轉(zhuǎn)換某些文件的操作。
? ? ? ? |--安裝gulp-if插件:

安裝gulp-if

? ? ? ? |--在同一個(gè)管道下,處理js和css文件,通過條件判斷只壓縮css文件
? ? ? ? ? ? |--安裝壓縮css插件

壓縮css插件

? ? ? ? ? ? |--引入壓縮css插件

引入

? ? ? ? ? ? |--使用gulp-if和gulp-clean-css組合處理,判斷只處理css文件,對css文件進(jìn)行壓縮

判斷并壓縮css

? ? ? ? ? ? |--結(jié)果:

壓縮成功
沒有都js操作,但是生成到了新目錄

二、文件監(jiān)控

? ? |--定義:gulp的api提供了watch()方法,利用文件系統(tǒng)的監(jiān)測程序(file system watcher)將globs和任務(wù)task
? ? 進(jìn)行關(guān)聯(lián)。對匹配glob的文件進(jìn)行監(jiān)控,如果有文件被修改了就會(huì)執(zhí)行關(guān)聯(lián)的任務(wù)。如果被執(zhí)行的task沒有
? ? 觸發(fā)異步完成信號,它將永遠(yuǎn)不會(huì)再運(yùn)行了。
? ? |--用法:

可以只關(guān)聯(lián)一個(gè)任務(wù),或任務(wù)組合

? ? |--注意:
? ? ? ? |--1.不能監(jiān)控同步任務(wù),因?yàn)槟銓⑼饺蝿?wù)關(guān)聯(lián)到監(jiān)控程序,則無法確定任務(wù)的完成情況,任務(wù)將不會(huì)再
? ? ? ? ? ?次運(yùn)行(假定當(dāng)前正在運(yùn)行)。
? ? ? ? |--2.調(diào)用watch()之后,關(guān)聯(lián)的任務(wù)不會(huì)立即執(zhí)行,而是等到第一次文件修改后才執(zhí)行,如果需要第一次
? ? ? ? ? ?修改文件之前執(zhí)行,也就是調(diào)用watch立即執(zhí)行,設(shè)置watch('src/*.js',{ignoreInitial:false},task)
? ? ? ? |--3.watch()?方法能夠保證當(dāng)前執(zhí)行的任務(wù)不會(huì)再次并發(fā)執(zhí)行。當(dāng)文件監(jiān)控程序關(guān)聯(lián)的任務(wù)正在運(yùn)行時(shí)又有
? ? ? ? ? ?文件被修改了,那么所關(guān)聯(lián)任務(wù)的這次新的執(zhí)行將被放到執(zhí)行隊(duì)列中等待,直到上一次關(guān)聯(lián)任務(wù)執(zhí)行完
? ? ? ? ? ?之后才能運(yùn)行。每一次文件修改只產(chǎn)生一次關(guān)聯(lián)任務(wù)的執(zhí)行并放入隊(duì)列中。如果想要禁用隊(duì)列,設(shè)置:
? ?????????watch('src/*.js',{queue:false},task)
? ? ? ? |--文件更改之后,只有經(jīng)過 200 毫秒的延遲之后,文件監(jiān)控程序所關(guān)聯(lián)的任務(wù)才會(huì)被執(zhí)行。這是為了避
? ? ? ? ? ?免在同使更改許多文件時(shí)(例如查找和替換操作)過早啟動(dòng)任務(wù)(taks)的執(zhí)行。如果需要修改延遲
? ? ? ? ? ? 時(shí)間,設(shè)置:?watch('src/*.js',{delay:2000},task),單位毫秒。
? ? |--可監(jiān)控的事件:
? ? ? ? |--1.默認(rèn)只要?jiǎng)?chuàng)建、更改、刪除文件,文件監(jiān)控程序就會(huì)執(zhí)行關(guān)聯(lián)任務(wù)。
? ? ? ? |--2.如果需要使用不同事件,可以再watch方法中傳遞events參數(shù):
? ? ? ? ? ? |--add
? ? ? ? ? ? |--addDir
? ? ? ? ? ? |--change
? ? ? ? ? ? |--unlink
? ? ? ? ? ? |--unlinkDir
? ? ? ? ? ? |--ready
? ? ? ? ? ? |--error
? ? ? ? ? ? |--all:除ready和error意外的所有事件。

三、gulp Api及常用插件使用

? ? |--Task1:將less文件轉(zhuǎn)為css文件。
? ? ? ? |--安裝插件:gulp-less

安裝gulp-less

? ? ? ? |--使用:

gulpfile.js

? ? ? ? |--效果:

處理前
處理后

? ? |--Task2:復(fù)制文件

復(fù)制文件
文件目錄

? ? |--Task3:壓縮js文件
? ? ? ? |--安裝插件gulp-uglify:壓縮js插件

安裝gulp-uglify插件

? ? ? ? |--安裝插件gulp-rename:安裝重命名文件,常用于修改壓縮后文件的擴(kuò)展名(.min.js)

安裝gulp-rename插件

? ? ? ? |--安裝插件gulp-babel模塊:用于支持es6,7,8語法:

安裝gulp-babel模塊

? ? ? ? |--插件安裝完畢:

準(zhǔn)備就緒

? ? ? ? |--創(chuàng)建壓縮js的task:

gulpfile.js中引入用到的插件
壓縮js任務(wù)

? ? ? ? |--輸出結(jié)果:

js壓縮成功!

? ? |--Task4:壓縮css文件
? ? ? ? |--安裝壓縮css插件:gulp-clean-css

安裝壓縮css插件

? ? ? ? |--創(chuàng)建任務(wù):

引入插件
創(chuàng)建壓縮css任務(wù)

? ? ? ? |--輸出結(jié)果:

壓縮成功!!

? ? |--添加監(jiān)聽:添加監(jiān)聽,針對src/index.less進(jìn)行一個(gè)監(jiān)聽,當(dāng)有修改的時(shí)候,執(zhí)行l(wèi)ess轉(zhuǎn)css操作。

監(jiān)聽index.less

? ? ? ? |--修改index.less文件內(nèi)容:

添加h2代碼塊

? ? ? ? |--自動(dòng)指定了task1,對less進(jìn)行了轉(zhuǎn)換為css:

轉(zhuǎn)換成功

? ? |--Task5:圖片壓縮
? ? ? ? |--安裝圖片壓縮插件:下面都可以
? ? ? ? ? ? |--gulp-tinypng-nokey
? ? ? ? ? ? |--gulp-imagemin
? ? ? ? ? ? |--gulp-tony-imgmin:以這個(gè)舉例

安裝

? ? ? ? |--創(chuàng)建任務(wù):

引入插件
壓縮圖片任務(wù)

? ? ? ? |--輸出結(jié)果:

壓縮后

? ? |--Task6:壓縮html文件
? ? ? ? |--安裝插件:gulp-htmlmin

安裝插件

? ? ? ? |--創(chuàng)建任務(wù):去除空白

壓縮html任務(wù)

? ? ? ? |--執(zhí)行結(jié)果:

文件內(nèi)容
壓縮前大小
壓縮后大小

? ? |--Task7:壓縮處理后的文件,生成zip
? ? ? ? |--安裝插件:gulp-zip

安裝gulp-zip插件

? ? ? ? |--創(chuàng)建任務(wù):壓縮整個(gè)文件夾,生成zip文件

生成zip文件

? ? ? ? |--輸出結(jié)果:

zip文件
解壓縮后-common下所有文件

? ? |--這里羅列的就是一些簡單的插件,和常用的幾個(gè)任務(wù),主要是讓大家對gulp有個(gè)簡單的熟知,內(nèi)容都比較簡單,只寫個(gè)初學(xué)者,當(dāng)然我也是初學(xué)者,希望可以一起交流。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • gulpjs是一個(gè)前端構(gòu)建工具,與gruntjs相比,gulpjs無需寫一大堆繁雜的配置參數(shù),API也非常簡單,學(xué)...
    井皮皮閱讀 1,323評論 0 10
  • 1、gulp的安裝 首先確保你已經(jīng)正確安裝了nodejs環(huán)境。然后以全局方式安裝gulp: npm install...
    F_imok閱讀 2,399評論 1 11
  • gulpjs是一個(gè)前端構(gòu)建工具,與gruntjs相比,gulpjs無需寫一大堆繁雜的配置參數(shù),API也非常簡單,學(xué)...
    小裁縫sun閱讀 952評論 0 3
  • 在現(xiàn)在的前端開發(fā)中,前后端分離、模塊化開發(fā)、版本控制、文件合并與壓縮、mock數(shù)據(jù)等等一些原本后端的思想開始...
    Charlot閱讀 5,483評論 1 32
  • 對網(wǎng)站資源進(jìn)行優(yōu)化,并使用不同瀏覽器測試并不是網(wǎng)站設(shè)計(jì)過程中最有意思的部分,但是這個(gè)過程中的很多重復(fù)的任務(wù)能夠使用...
    懵逼js閱讀 1,087評論 0 8