最近在給公司的項目做版本管理,由于我們項目的奇葩性,框架的特性,以及我們gulpfile本身的復雜性,讓這個工作進行得非常困難且痛苦,好在最終是解決了問題。中間各種絞盡腦汁的不盡述,把這個有參考價值的點拿出來跟大家分享一下。
當時有個要做的事情是,對一個文件夾中的某些js做文件名替換,目錄結構大致如下:
|----src
|--------test.js
|--------testTpl.js
|--------test2.js
|--------test2Tpl.js
.....
我們要執行一個gulp任務,把名字中有tpl的文件找出來做代碼內容中的文件版本替換。這里需要對當前目錄的文件做過濾,但是gulp的node-glob語法決定了它只支持目錄、文件類型的過濾。我們需要的是對文件名做過濾的東西,因此需要做條件判斷的插件。
搜索得到gulp-if,這個gulp插件給我們提供了gulp操作中條件設置的可能,官網的示例代碼只是做了簡單的true/false的判斷來選擇性處理某些流程,比較簡單。
官網示例代碼
condition這個函數接收file值,然后通過邏輯代碼的判斷,返回true/false就可以達到目的。但是我們這個是對文件名的判斷,遍訪資源也沒有看到這種做法的案例。最后想起gulp的path模塊是可以獲取當前路徑的,當然也就包括文件名啦。最終順利的用path+gulp-if對文件名的判斷,過濾掉了不需要操作的文件,完成任務。示例代碼如下:
gulp-if示例代碼
代碼應該簡單明了吧,希望能給大家一個參考。
ps:現在看著很簡單的代碼,當時是想了很久才想到的解決方案,也許當時超負荷的腦子太笨,也許大家從來不認為實現對文件名的過濾是什么難事,那麻煩能給我分享一下你的方法,非常感謝 (手動萌~^v^~)