version_generator.js 內容以下:css
/** * 此模塊用於熱更新工程清單文件的生成 */ var fs = require('fs'); var path = require('path'); var crypto = require('crypto'); var manifest = { //服務器上資源文件存放路徑(src,res的路徑) packageUrl: 'http://192.168.200.117:8000/XiaoMing/remote-assets/', //服務器上project.manifest路徑 remoteManifestUrl: 'http://192.168.200.117:8000/XiaoMing/remote-assets/project.manifest', //服務器上version.manifest路徑 remoteVersionUrl: 'http://192.168.200.117:8000/XiaoMing/remote-assets/version.manifest', version: '1.0.0', assets: {}, searchPaths: [] }; //生成的manifest文件存放目錄 var dest = 'assets/'; //項目構建後資源的目錄 var src = 'build/jsb-link/'; /** * node version_generator.js -v 1.0.0 -u http://your-server-address/tutorial-hot-update/remote-assets/ -s native/package/ -d assets/ */ // Parse arguments var i = 2; while ( i < process.argv.length) { var arg = process.argv[i]; switch (arg) { case '--url' : case '-u' : var url = process.argv[i+1]; manifest.packageUrl = url; manifest.remoteManifestUrl = url + 'project.manifest'; manifest.remoteVersionUrl = url + 'version.manifest'; i += 2; break; case '--version' : case '-v' : manifest.version = process.argv[i+1]; i += 2; break; case '--src' : case '-s' : src = process.argv[i+1]; i += 2; break; case '--dest' : case '-d' : dest = process.argv[i+1]; i += 2; break; default : i++; break; } } function readDir (dir, obj) { var stat = fs.statSync(dir); if (!stat.isDirectory()) { return; } var subpaths = fs.readdirSync(dir), subpath, size, md5, compressed, relative; for (var i = 0; i < subpaths.length; ++i) { if (subpaths[i][0] === '.') { continue; } subpath = path.join(dir, subpaths[i])