UNPKG

vite-plugin-zip-file

Version:
6 lines (5 loc) 1.81 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("path"),n=require("fs"),Z=require("node:module");var y=typeof document<"u"?document.currentScript:null;const E=Z.createRequire(typeof document>"u"?require("url").pathToFileURL(__filename).href:y&&y.tagName.toUpperCase()==="SCRIPT"&&y.src||new URL("index.cjs",document.baseURI).href),r=c.sep,{cwd:w}=process,C={enabled:!0,folderPath:c.join(w(),"/dist"),outPath:c.resolve(w()),zipName:"",deleteFolder:!1,withoutMainFolder:!1};let a={};const N=z=>{let F={...C,...z},{enabled:d,folderPath:l,outPath:p,zipName:s,deleteFolder:P,withoutMainFolder:b}=F;if(d=!!d,!l||!p)throw new Error("config.folderPath and config.outPath is required.");l=c.resolve(l),p=c.resolve(p),s=s||l.split(r).pop()+".zip";const j=()=>{const i=E("jszip"),m=new i,g=function(e,o,t="",f=0){const R=n.readdirSync(o);b?f!==0&&(t+=o.split(r).pop()+r):t+=o.split(r).pop()+r,R.forEach(v=>{const u=c.join(o,r,v);n.statSync(u).isDirectory()?g(e,u,t,f+1):e.file(t+v,n.readFileSync(u))})},S=(e=s)=>{const o=c.join(p,r+e);n.existsSync(o)&&n.unlinkSync(o)},h=e=>{n.readdirSync(e).forEach(t=>{const f=e+r+t;n.statSync(f).isDirectory()?h(f):n.unlinkSync(f)}),n.rmdirSync(e)},q=async()=>new Promise((e,o)=>{g(m,l,"",0),m.generateAsync({type:"nodebuffer",compression:"DEFLATE",compressionOptions:{level:9}}).then(t=>{S(s),n.writeFileSync(c.join(p,r,s),t),P&&h(l),e(s)}).catch(t=>{o(t)})});return S(s),q()};return{name:"vite-plugin-zip-file",apply:"build",enforce:"post",configResolved(i){a=i.logger},async closeBundle(){try{if(!d)return;const i=await j();a.info(` ✨ [vite-plugin-zip-file] - zip floder successfully: ${i} `)}catch(i){a.error(typeof i=="string"?i:JSON.stringify(i)),a.error(` ❌ [vite-plugin-zip-file] - zip floder failed. `)}}}};exports.viteZip=N;