一、使用JSZIP包來 打包文件或者文件夾
1. node.js安裝 jszip(已安裝跳過)
npm install jszip
2.編寫 jszip打包代碼
1 let fs = require("fs");//獲取文件系統模塊,負責讀寫文件 2 let path = require("path");//工具模塊,處理文件路徑的小工具 3 let JSZIP = require("jszip"); 4 let zip = new JSZIP(); 5 6 //讀取目錄及文件 7 function readDir(obj, nowPath) { 8 let files = fs.readdirSync(nowPath);//讀取目錄中的所有文件及文件夾(同步操作) 9 files.forEach(function (fileName, index) {//遍歷檢測目錄中的文件 10 console.log(fileName, index);//打印當前讀取的文件名 11 let fillPath = nowPath + "/" + fileName; 12 let file = fs.statSync(fillPath);//獲取一個文件的屬性 13 if (file.isDirectory()) {//如果是目錄的話,繼續查詢 14 let dirlist = zip.folder(fileName);//壓縮對象中生成該目錄 15 readDir(dirlist, fillPath);//重新檢索目錄文件 16 } else { 17 obj.file(fileName, fs.readFileSync(fillPath));//壓縮目錄添加文件 18 } 19 }); 20 } 21 22 //開始壓縮文件 23 function startZIP() { 24 var currPath = __dirname;//文件的絕對路徑 當前當前js所在的絕對路徑 25 var targetDir = path.join(currPath, "JsonMerge"); 26 readDir(zip, targetDir); 27 zip.generateAsync({//設置壓縮格式,開始打包 28 type: "nodebuffer",//nodejs用 29 compression: "DEFLATE",//壓縮算法 30 compressionOptions: {//壓縮級別 31 level: 9 32 } 33 }).then(function (content) { 34 fs.writeFileSync(currPath + "/result.zip", content, "utf-8");//將打包的內容寫入 當前目錄下的 result.zip中 35 }); 36 } 37 38 startZIP();
3. H5游戲客戶端白鷺引擎利用jszip 解壓配置文件
RES.getResByUrl(configURL, function (data) { let txt = new JSZIP(data).file("a.json").asText(); let jsonObj = JSON.parse(txt);//轉化為json對象 //將配置信息存儲便於運用 }, this, RES.ResourceItem.TYPE_BIN);
要使用jszip, 首先下載jszip第三方庫,下載地址,Egret官方在github上放的:https://github.com/egret-labs/egret-game-library
將jszip放在項目目錄下,放在哪你自選,只要配置中添加路徑時正確就行了(下圖中放在了 lib目錄下)。
然后在Egret中引用第三方庫,項目目錄下egretProperties.json文件中添加
{ "engineVersion": "5.2.12", "compilerVersion": "5.2.12", "template": {}, "target": { "current": "web" }, "urlParams": {}, "modules": [ { "name": "egret" }, { "name": "assetsmanager" }, { "name": "tween" }, { "name": "game" }, { "name": "socket" }, { "name": "promise" }, { "name": "dragonBones" }, { "name": "jszip", "path": "./libs/jszip" } ] }