最近在给公司的项目做版本管理,由于我们项目的奇葩性,框架的特性,以及我们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对文件名的判断,过滤掉了不需要操作的文件,完成任务。示例代码如下:
代码应该简单明了吧,希望能给大家一个参考。
ps:现在看着很简单的代码,当时是想了很久才想到的解决方案,也许当时超负荷的脑子太笨,也许大家从来不认为实现对文件名的过滤是什么难事,那麻烦能给我分享一下你的方法,非常感谢 (手动萌~^v^~)