最近在給公司的項(xiàng)目做版本管理,由于我們項(xiàng)目的奇葩性,框架的特性,以及我們gulpfile本身的復(fù)雜性,讓這個(gè)工作進(jìn)行得非常困難且痛苦,好在最終是解決了問題。中間各種絞盡腦汁的不盡述,把這個(gè)有參考價(jià)值的點(diǎn)拿出來跟大家分享一下。
當(dāng)時(shí)有個(gè)要做的事情是,對(duì)一個(gè)文件夾中的某些js做文件名替換,目錄結(jié)構(gòu)大致如下:
|----src
|--------test.js
|--------testTpl.js
|--------test2.js
|--------test2Tpl.js
.....
我們要執(zhí)行一個(gè)gulp任務(wù),把名字中有tpl的文件找出來做代碼內(nèi)容中的文件版本替換。這里需要對(duì)當(dāng)前目錄的文件做過濾,但是gulp的node-glob語(yǔ)法決定了它只支持目錄、文件類型的過濾。我們需要的是對(duì)文件名做過濾的東西,因此需要做條件判斷的插件。
搜索得到gulp-if,這個(gè)gulp插件給我們提供了gulp操作中條件設(shè)置的可能,官網(wǎng)的示例代碼只是做了簡(jiǎn)單的true/false的判斷來選擇性處理某些流程,比較簡(jiǎn)單。

condition這個(gè)函數(shù)接收file值,然后通過邏輯代碼的判斷,返回true/false就可以達(dá)到目的。但是我們這個(gè)是對(duì)文件名的判斷,遍訪資源也沒有看到這種做法的案例。最后想起gulp的path模塊是可以獲取當(dāng)前路徑的,當(dāng)然也就包括文件名啦。最終順利的用path+gulp-if對(duì)文件名的判斷,過濾掉了不需要操作的文件,完成任務(wù)。示例代碼如下:

代碼應(yīng)該簡(jiǎn)單明了吧,希望能給大家一個(gè)參考。
ps:現(xiàn)在看著很簡(jiǎn)單的代碼,當(dāng)時(shí)是想了很久才想到的解決方案,也許當(dāng)時(shí)超負(fù)荷的腦子太笨,也許大家從來不認(rèn)為實(shí)現(xiàn)對(duì)文件名的過濾是什么難事,那麻煩能給我分享一下你的方法,非常感謝 (手動(dòng)萌~^v^~)