最近在学习使用gulp
对前端进行打包发布,遇到了几个问题,需要请教一下各位大大。
1.怎样对不同的文件分别进行打包,比如js文件夹里有index
和detail
两个文件夹,我想对这两个分别打包,然后我把index
和detail
写进配置文件里,程序就读取配置文件,然后分别生成index.abc123.min.js
和detail.def456.min.js
(中间的是md5摘要)与map.json
。
现在我使用的是gulp-rev-all
,但是这个插件不能不能同时对多个文件夹进行打包,如果我写多个gulp.src的话,扩展性就不好了,以后有新的文件夹时,需要每次修改gulpfile.js。以下是我写的一个简单的程序:
var revAll = new RevAll({
hashLength : 16
}),
return gulp.src('./css/index/**/*.css')
.pipe(concat('index.css'))
.pipe(cache('caching'))
.pipe(css_minify())
.pipe(revAll.revision())
.pipe(gulp.dest('./build'))
.pipe(revAll.manifestFile())
.pipe(gulp.dest('./rev'))
.pipe(revAll.versionFile())
.pipe(gulp.dest('./rev'))
2.读取git或hg的tag号
假如上面的已经成功了,生成了一个map.json,可是我想每次是非覆盖式发布,发布时都会根据当前git的tag生成一个比如map-1.0.0.json
这样的配置文件,git最新的tag是什么,发布时就生成一个什么样的map.json配置文件;然后php那边再使用gulp 1.0.0
,读取这个map-1.0.0.json
的配置文件,替换js和css路径。
git中.git/refs/
的tag目录里,文件名就是tag号,内容是当时打tag时的hash标识,我是用fs.readdir
读取这个目录里所有的文件名:['1.0.0', '1.0.1', '1.1.0', '1.2.0'],然后取这个数组的最后一个作为最新的tag号,可是后来发现一个问题:1.11.0
比1.2.0
小,在数组里,排在1.2.0的前面,肯定是取不到1.11.0
的这个tag号的,有没有更好,更准确的方式获取当前最新的tag。
谢谢各位
第一个问题,参数是可以写['路径1','路径2']的啊
第一个问题,没有想到好方法。
第二个问题,你可以看看这个,专门处理这种版本命名的工具 https://github.com/npm/node-semver
webpack