node js zip压缩脚本

109 阅读1分钟

import JsZip from "jszip";
import fs from "node:fs";
const zip = new JsZip();

export async function main() {
  const paths = "./dist/x_component_require"; //定义根目录
  const filePaths = fs.readdirSync(`${paths}`, { recursive: true }); //读取文件
  filePaths.forEach((item) => {
    const currentPath = `${paths}/${item}`; //获取当前路径
    const zipPathArray = currentPath.split("/");
    zipPathArray.shift();
    const zipPath = zipPathArray.join("/");
    if (isFile(currentPath)) {
      const uniArray8 = new Uint8Array(fs.readFileSync(currentPath));
      zip.file(zipPath, uniArray8);
    }
  });
  const content = await zip.generateAsync({
    type: "uint8array",
    compression: "DEFLATE", //开启压缩
    compressionOptions: {
      level: 9, //压缩等级  1-9
    },
  }); //读取并且开启压缩

  fs.writeFileSync("./dist/x_component_require.zip", content); //创建文件兵写入
}

function isFile(path: string) {
  const res = fs.lstatSync(path).isFile();
  return res;
}


main()