const JSZip = require("jszip");const zip = new JSZip();const fs = require("fs");const path = require("path");function readDir(zip, dirPath) { // 读取dist下的根文件目录 const files = fs.readdirSync(dirPath); files.forEach(fileName => { const fillPath = dirPath + "/" + fileName; const file = fs.statSync(fillPath); // 如果是文件夹的话需要递归遍历下面的子文件 if (file.isDirectory()) { const dirZip = zip.folder(fileName); readDir(dirZip, fillPath); } else { // 读取每个文件为buffer存到zip中 zip.file(fileName, fs.readFileSync(fillPath)); } });}function create(sourceDir) { readDir(zip, sourceDir); zip .generateAsync({ type: "nodebuffer", // 压缩类型 compression: "DEFLATE", // 压缩算法 compressionOptions: { // 压缩级别 level: 9 } }) .then(content => { const dest = path.join(__dirname, "./dist/zip"); if (dest) { // 删除旧包目录 const folder_exists = fs.existsSync("./dist/zip"); if (folder_exists == true) { const dirList = fs.readdirSync("./dist/zip"); dirList.forEach(function(fileName) { fs.unlinkSync("./dist/zip/" + fileName); }); } } // 创建新包目录 fs.mkdirSync(dest, { recursive: true }); // 把zip包写到硬盘中,这个content现在是一段buffer fs.writeFileSync(`${dest}/miniPrograms.service.zip`, content); });}function generateZip() { const sourceDir = path.join(__dirname, "./dist"); fs.access(sourceDir, err => { if (err) { fs.mkdirSync(sourceDir); } create(sourceDir); });}generateZip();