12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- var returner;
- if (typeof(window) !== "undefined") {
- returner = "blob"
- } else {
- returner = "nodebuffer"
- }
- var JSZip = require("jszip");
- var async = require("async");
- var _ = require("lodash");
- function generatezip(endfilename, obj, callback) {
- var filenames = _.keys(obj);
- var zip = new JSZip();
- async.mapSeries(filenames, function(ofilename, next) {
- var file = obj[ofilename];
-
- if (ofilename.indexOf(".js") === ofilename.length-3) {
- console.log("JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ",ofilename, file.data.length);
- zip.file(ofilename, file.data);
- } else {
- if (ofilename.indexOf("namespace.manifest") === 0) {
- zip.file(ofilename, JSON.stringify(file.data, true, 2))
- } else {
- if (typeof(file) === "object" && ofilename.indexOf(".json") === -1) {
- zip.file(ofilename + ".json", JSON.stringify(file, true, 2))
- } else {
- zip.file(ofilename, file)
- }
- }
- }
- next()
- }, function(err, result) {
- zip.generateAsync({
- type: returner,
- compression: "DEFLATE",
- compressionOptions: {
- level: 9
- }
- }).then(function(blob) {
- callback(null, {
- filename: endfilename,
- blob: blob
- })
- }, function(err) {
- callback(err)
- });
- })
- }
- module.exports = generatezip;
|