用node实现基于svn diff的文件增量打包程序
发布在开发记录2015年4月9日view:3145from
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

公司使用native+html5混合开发App,页面数据较大,并想让用户安装后能直接离线查看,所以需要将页面打包到App中,相应我们也需要实现增量补丁的方式进行页面数据的更新。

和IOS同事开发协商后,ZIP包除了提供修改或新增的文件外,还需要提供一个包信息文件package.json 内容如下:

{   
    "version": "1.1",
    "modifiedCount": 0,
    "modifiedArr": [],
    "addedCount": 0,
    "addedArr": [],
    "deletedCount": 0,
    "deletedArr": []
}

一开始采用遍历文件,比对上一版本的文件信息(md5)的方法,用as3生成air应用程序实现。

界面如下: mysvn

发现使用很不方便,无法让前端自己定制(修改版本文件,版本号自增,随着文件增多速度变慢等等) 。当时心里一直有个梗:SVN便是版本管理系统,能不能利用它来打包?(SVN白痴,只使用基础功能,没用过分支,标记之类的功能)

无意中发现svn diff可以查看主干和分支的内容差异,觉得自己的想法能够实现。以下为代码示意:

1、每出一个版本,我们会打一个svn tag来备份代码,用版本号来标记,如1.1。

2、我们看看svn diff,能够让我们得到什么 svn diff

A:新增
M:修改
D:删除

3、如何在node执行window命令

var exec = require('child_process').exec
exec("svn diff .....", function (err, stdout, stderr){
    if (err) throw err
    console.log(stdout) //cmd返回信息
}

4、生成package.json,使用node-archiver打包文件,详细使用方法请见:node-archiver

npm install --save-dev archiver

这样,我们用很少的代码就可以实现资源增量打包了。

最后我们做了一套web版的管理系统,大概是这个样子。 enter image description here

评论
发表评论
1年前
赞了此文章!
WRITTEN BY
佘小马是怪蜀黍
完美世界网站部前端开发
TA的新浪微博
PUBLISHED IN
开发记录

开发记录

我的收藏