UNPKG

vite-plugin-fflate-zip

Version:

Vite plugin for packaging build folder into zip file via fflate

2 lines 2.07 kB
import{existsSync as x,mkdirSync as S,readFileSync as z,readdirSync as E,statSync as F,writeFileSync as O}from"node:fs";import{join as f}from"node:path";import{cwd as $}from"node:process";import{cyan as d,getRootByPackageName as b,gray as k,green as D,red as v}from"@heybrostudio/utils";import{zipSync as h}from"fflate";import u from"node:path";var y=$(),w=["zip","gz","png","jpg","jpeg","pdf","doc","docx","ppt","pptx","xls","xlsx","heic","heif","7z","bz2","rar","gif","webp","webm","mp4","mov","mp3","aifc"];function P(o){let e=new Map;function t(i){i.src.indexOf(".")>-1?c(i.src,u.join(i.prefix||"",u.basename(i.src))):r(i.src,i.src,i.prefix,i.excludedFiles)}function c(i,n){let a=i.slice(i.lastIndexOf(".")+1).toLowerCase();e.set(n,[z(i),{level:w.includes(a)?0:6}])}function r(i,n,a="",g=[]){let m=E(i);for(let l of m){if(g?.includes(l))continue;let p=f(i,l);F(p).isDirectory()?r(p,n,a,g):c(p,u.join(a,u.relative(n,p)))}}return o.map(i=>{t(i)}),e}var s={inDir:"",outDir:"dist-zip",zipName:"",excludedFiles:[],onArchived:()=>{},onError:()=>{}};function j(o={}){return{name:"vite-plugin-fflate-zip",apply:"build",enforce:"post",configResolved(e){try{let{root:t,build:c}=e;if(Object.assign(s,{inDir:c.outDir},{...o}),!s?.zipName){let r=z(f(t,"package.json")),i=JSON.parse(r.toString());s.zipName=`${i.name}-${i.version}`}}catch(t){t&&v(t),s.onError(t)}},closeBundle(){try{let e="fflate",t=b(e),c=JSON.parse(z(f(t,"package.json")).toString()).version;console.log(d(`\u26A1\uFE0F${e} v${c}`),D("zipping for production..."));let{inDir:r,outDir:i,zipName:n}=s;if(r&&!x(r))throw new Error(`"${r}" folder does not exist!`);x(i)||S(i,{recursive:!0});let a=Date.now();!o.files&&r&&(o.files=[{src:f(y,r),excludedFiles:o.excludedFiles}]);let g=P(o.files),m=h(Object.fromEntries(g),{level:6}),l=f(y,i,`${n}.zip`);O(l,m);let p=`${(F(l).size/1024).toFixed(2)} kB`;console.log(k(`${i}/${d(n)}${d(".zip")}`),d(`| ${p}`)),s.onArchived(),console.log(D(`\u2713 zip in ${Date.now()-a}ms`))}catch(e){e&&console.log(v(e)),s.onError(e)}}}}export{j as default}; //# sourceMappingURL=index.js.map