NodeJs 使用 jszip 或者 zip-dir 压缩文件夹(zip)
jszip
是一个用于创建、读取和编辑.zip
文件的JavaScript
库,且API
的使用也很简单。
# 使用 jszip 压缩文件夹
# 安装jszip
npm install jszip --save
1
# 简单的使用示例
let fs = require("fs");//获取文件系统模块,负责读写文件
let path = require("path");//工具模块,处理文件路径的小工具
let JSZIP = require("jszip");
let zip = new JSZIP();
//读取目录及文件
function readDir(obj, nowPath) {
let files = fs.readdirSync(nowPath);//读取目录中的所有文件及文件夹(同步操作)
files.forEach(function (fileName, index) {//遍历检测目录中的文件
console.log(fileName, index);//打印当前读取的文件名
let fillPath = nowPath + "/" + fileName;
let file = fs.statSync(fillPath);//获取一个文件的属性
if (file.isDirectory()) {//如果是目录的话,继续查询
let dirlist = zip.folder(fileName);//压缩对象中生成该目录
readDir(dirlist, fillPath);//重新检索目录文件
} else {
obj.file(fileName, fs.readFileSync(fillPath));//压缩目录添加文件
}
});
}
//开始压缩文件
function startZIP() {
var currPath = __dirname;//文件的绝对路径 当前当前js所在的绝对路径
var targetDir = path.join(currPath, "dist");
readDir(zip, targetDir);
zip.generateAsync({//设置压缩格式,开始打包
type: "nodebuffer",//nodejs用
compression: "DEFLATE",//压缩算法
compressionOptions: {//压缩级别
level: 9
}
}).then(function (content) {
fs.writeFileSync(currPath + "/dist.zip", content, "utf-8");//将打包的内容写入 当前目录下的 result.zip中
});
}
startZIP();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 使用 zip-dir 压缩文件夹
# 安装zip-dir
npm install zip-dir --save
1
# 简单的使用示例
let zipdir = require('zip-dir');
zipdir('./dist', { saveTo: './dist.zip' }, function (err, buffer) {
console.log(err)
if (!err) {
console.log(buffer)
console.log('压缩成功')
}
});
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 参考文档
jszip:https://stuk.github.io/jszip/ (opens new window) GitHub:https://github.com/Stuk/jszip (opens new window) zip-dir:github.com/jsantell/node-zip-dir
上次更新: 2024/01/30, 00:35:17
- 01
- Node与GLIBC_2.27不兼容解决方案08-19
- 02
- Git清空本地文件跟踪缓存08-13