前言:开发环境未连接jenkins。每个包打包后,需要手动压缩上传到服务器,然后解压。体验比较差,所以打算自己写一个自动部署的脚本。在此之前,我们需要对打包后的文件进行压缩。jszip这里使用的库是jszip,主要是三个关键方法:constzip=newJSZIP():我们需要新建一个实例,这个实例保存了要压缩的数据和目录结构zip.generateAsync:返回一个promise,然后参数为压缩内容,可以通过fs.writeFile写入压缩文件。参数是一个对象{type:'nodebuffer',compression:'DEFLATE',//压缩算法compressionOptions:{level:9//压缩级别}}zip.folder:如果是文件夹,需要用这个方法生成一个zip文件zip.file中对应的文件夹:压缩一个文件例如:打包后的文件在根目录下的prod文件夹中,在根目录下新建一个zip.js,具体代码如下constpath=require('path');constJSZIP=require('jszip');constfs=require('fs');constzip=newJSZIP();pushZip(zip,path.resolve(__dirname,'./prod'));zip.generateAsync({type:'nodebuffer',compression:'DEFLATE',compressionOptions:{level:9}}).then(function(content){fs.writeFile(path.resolve(__dirname,'./prod/XX.zip'),content,err=>{if(err)throwerr;console.log('文件已保存');});});functionpushZip(floder,pPath){constfiles=fs.readdirSync(pPath,{withFileTypes:true});files.forEach((dirent,index)=>{letfilePath=`${pPath}/${dirent.name}`;if(dirent.isDirectory()){letzipFloder=zip.folder(filePath.replace(`${__目录名}\\prod/`,''));pushZip(zipFloder,文件路径);}else{floder.file(dirent.name,fs.readFileSync(filePath));}});}执行nodezip.js可以看到prod文件夹里多了一个XX.zip文件
