egret版本控制究极解决方案node gulp

换了mac然后升级了mac版本,命令行以及添加了合并js类库功能,代码提交至高大上的github
传送门

前几天用批处理试着解决版本控制问题,虽然表面上解决了问题,但是还存在一些隐藏的问题,而且代码扩展通用性也很不友好。

所以研究可以使用gulp来解决此问题,花一段时间研究发现,它比批处理方法友善好多,又有超多的插件支持,很多想得到实现的效果都可以找到方法来处理。

首先安装node,不再赘述,自行搜索。

需要用到的引用 这里给到package.json

{
"name": "node",
"version": "1.0.0",
"description": "",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node gulpfile.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"del": "^3.0.0",
"gulp": "^3.9.1",
"gulp-flatten": "^0.3.1",
"gulp-rev": "^7.1.2",
"gulp-rev-collector": "^1.2.2",
"gulp-sequence": "^0.4.6"
}
}

然后核心gulpfile.js


//gulp
var gulp = require('gulp');
//hash改名
var rev = require('gulp-rev');
//根据manifest修改引用
var revCollector = require('gulp-rev-collector');
//异步执行
var gulpSequence = require('gulp-sequence');
//干掉目录层
var flatten = require('gulp-flatten');
//删除临时文件
var del = require('del');
//修改所有文件名并放到新release文件夹下
//排除index.html favicon.ico
//并生成相关的manifest文件到dist
gulp.task('rename', function() {
return gulp.src(['heyankun/**/*.*','!heyankun/index.html','!heyankun/favicon.ico'])
.pipe(rev())
.pipe(gulp.dest('./release'))
.pipe( rev.manifest({merge: true }) )
.pipe(gulp.dest('./dist'));
});
//移动index
gulp.task('moveindex', function() {
return gulp.src(['heyankun/**/*.html'])
.pipe(gulp.dest('./release'));
});
//处理图片,因为有相对路径所以做了扁平化文件路径干掉文件夹,只替换文件名
gulp.task('flattenpng', function() {
return gulp.src(['heyankun/**/*','!heyankun/index.html'])
.pipe(flatten())
.pipe(gulp.dest('./dist'))
.pipe(rev())
.pipe( rev.manifest({merge: true }) )
.pipe(gulp.dest('./dist'));
});
//通过hash来精确定位到html模板中需要更改的部分,然后将修改成功的文件生成到指定目录
gulp.task('revjs',function(){
return gulp.src(['dist/rev-manifest.json','release/**/*.js'])
.pipe( revCollector() )
.pipe(gulp.dest('release'));
});
gulp.task('revres',function(){
return gulp.src(['dist/rev-manifest.json','release/**/*.json'])
.pipe( revCollector() )
.pipe(gulp.dest('release'));
});
gulp.task('revfnt',function(){
return gulp.src(['dist/rev-manifest.json','release/**/*.fnt'])
.pipe( revCollector() )
.pipe(gulp.dest('release'));
});
gulp.task('revhtml',function(){
return gulp.src(['dist/rev-manifest.json','release/*.html'])
.pipe( revCollector() )
.pipe(gulp.dest('release'));
});
//删除临时文件 dist
gulp.task('clean', function (cb) {
del([
'dist'
], cb);
});
//合并执行任务
gulp.task('refile', function(cb) {
gulpSequence(
'rename',
'moveindex',
'flattenpng',
'revjs',
'revres',
'revfnt',
'revhtml',
'clean'
)(cb);
});

此方法可以将egret发布文件进行hash重命名以及引用解决缓存问题。

egret版本4.10

本文作者:依十七  本文链接:http://www.is17.com/448/

本站文章若无特别说明,皆为原创,如需转载,请以超链接形式注明作者和原始出处及本声明

发布者

依十七

风逝难依,陌归十七。

发表评论

电子邮件地址不会被公开。 必填项已用*标注