@vctqs1/vite-plugin-resource-collector
Version:
a Vite plugin designed to help developers collect and log transpiled source files during the build process
2 lines (1 loc) • 1.84 kB
JavaScript
;var e=require("node:fs"),i=require("node:path"),r=require("vite");function n(e){return`[36m${e}[39m`}module.exports=function(s){const{outputDir:o="build",baseDir:t=process.cwd(),mode:c="log",logType:l="md"}=s,a=r.createLogger("info",{prefix:"[vite-plugin-source-collector]"});return{name:"vite-plugin-source-collector",enforce:"pre",apply:"build",async config(e){e.customLogger=a,e.logLevel="info"},buildStart(){a.info(`Collecting source files to ${n(o)}`,{timestamp:!0}),e.mkdirSync(o,{recursive:!0})},async transform(e,i){this.addWatchFile(i)},async generateBundle(){const r=i.resolve(t),s=i.join(r,`${o}/README.${l}`.replace(t,"")),d=new Set,u=r=>{if(!d.has(r)&&e.existsSync(r)){const n=i.join(o,r.replace(t,""));if("copy"===c){const s=e.readFileSync(r,"utf-8");e.mkdirSync(i.dirname(n),{recursive:!0}),e.writeFileSync(n,s)}d.add(r)}};for(const e of this.getModuleIds())e.includes("node_modules")||e.includes("\0")||u(e);switch(e.mkdirSync(i.dirname(s),{recursive:!0}),l){case"md":!function({fileName:i,preservedFiles:r}){let n="### Vite Plugin Source Collector\n\n";n+="| # | File Name | Size (KB) |\n",n+="| --- | --- | --- |\n";let s=1;for(const i of r){n+=`| ${s++} | ${i} | ${(e.statSync(i).size/1024).toFixed(2)} |\n`}e.writeFileSync(i,n)}({fileName:s,preservedFiles:d,baseDir:t});break;case"csv":!function({fileName:i,preservedFiles:r}){let n="No,File Name,Size (KB)\n";n+="---,---,---\n";let s=1;for(const i of r){n+=`${s++},${i},${(e.statSync(i).size/1024).toFixed(2)}\n`}e.writeFileSync(i,n)}({fileName:s,preservedFiles:d,baseDir:t});break;case"json":!function({fileName:i,preservedFiles:r}){const n={};for(const i of r){const r=e.statSync(i).size/1024;n[i]=r}e.writeFileSync(i,JSON.stringify(n,null,2))}({fileName:s,preservedFiles:d,baseDir:t})}a.info(`Collected source files to ${n(s)}`,{timestamp:!0})}}};