简单介绍
最近写个工具,需要将一些文件压缩到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'});