zip压缩工具jszip--nodejs常用模块(8)

时间:2022-08-29 21:57:03

简单介绍

最近写个工具,需要将一些文件压缩到zip包里。使用nodejs调用机器上的zip命令也可以,但对机器就会有要求,需要安装zip命令。当npm上找了下,jszip和adm-zip,这两个工具都是用js实现的zip压缩和解压。adm-zip压缩工具有bug,压缩gif图片和jpg图片时,会出问题。下面主要介绍下jszip的使用
帮助文档
https://github.com/Stuk/jszip

下载的jszip工具,它的documentation目录下有api详细文档。

demo
这里只贴了代码,具体步骤参考《js,css压缩工具yuicompressor--nodejs常用模块(1)》

var JSZip = require('jszip');
var fs = require('fs');
var zip = new JSZip();

zip.file('test.txt', 'hello there');
zip.folder("images/img").file("201.gif", fs.readFileSync("../../source/img/201.gif"));
zip.folder("images/img").file("199.jpg", fs.readFileSync("../../source/img/199.jpg"));
zip.folder("images/img").file("weibo.png", fs.readFileSync("../../source/img/weibo.png"));
zip.folder("images/js").file("navigation.js", fs.readFileSync("../../source/js/navigation.js"));
var data = zip.generate({base64:false,compression:'DEFLATE'});
fs.writeFile('demo.zip', data, 'binary', function(){
    console.log('success');
});

生成的demo.zip的目录结构:
demo.zip
|--test.txt
|--images
|    |--img
|    |    |--201.gif
|    |    |--199.jpg
|    |    |--weibo.png
|    |--js
|    |    |--navigation.js

参数说明

这个工具api很多,这里就不列出来,详细信息看官方文档吧。但在使用过程中,发现官方文档有个问题,这里记录下。
对于generate方法options参数中base64属性,默认值为true(官方文档说默认值为false);指定为true或不指定时,生成的zip包会有问题,后续使用这个api时记得加一下就好。

var data = zip.generate({base64:false,compression:'DEFLATE'});