@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
import e from"node:fs";import i from"node:path";import{createLogger as o}from"vite";function n(e){return`[36m${e}[39m`}function r(r){const{outputDir:t="build",baseDir:s=process.cwd(),mode:c="log",logType:l="md"}=r,a=o("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(t)}`,{timestamp:!0}),e.mkdirSync(t,{recursive:!0})},async transform(e,i){this.addWatchFile(i)},async generateBundle(){const o=i.resolve(s),r=i.join(o,`${t}/README.${l}`.replace(s,"")),f=new Set,d=o=>{if(!f.has(o)&&e.existsSync(o)){const n=i.join(t,o.replace(s,""));if("copy"===c){const r=e.readFileSync(o,"utf-8");e.mkdirSync(i.dirname(n),{recursive:!0}),e.writeFileSync(n,r)}f.add(o)}};for(const e of this.getModuleIds())e.includes("node_modules")||e.includes("\0")||d(e);switch(e.mkdirSync(i.dirname(r),{recursive:!0}),l){case"md":!function({fileName:i,preservedFiles:o}){let n="### Vite Plugin Source Collector\n\n";n+="| # | File Name | Size (KB) |\n",n+="| --- | --- | --- |\n";let r=1;for(const i of o){n+=`| ${r++} | ${i} | ${(e.statSync(i).size/1024).toFixed(2)} |\n`}e.writeFileSync(i,n)}({fileName:r,preservedFiles:f,baseDir:s});break;case"csv":!function({fileName:i,preservedFiles:o}){let n="No,File Name,Size (KB)\n";n+="---,---,---\n";let r=1;for(const i of o){n+=`${r++},${i},${(e.statSync(i).size/1024).toFixed(2)}\n`}e.writeFileSync(i,n)}({fileName:r,preservedFiles:f,baseDir:s});break;case"json":!function({fileName:i,preservedFiles:o}){const n={};for(const i of o){const o=e.statSync(i).size/1024;n[i]=o}e.writeFileSync(i,JSON.stringify(n,null,2))}({fileName:r,preservedFiles:f,baseDir:s})}a.info(`Collected source files to ${n(r)}`,{timestamp:!0})}}}export{r as default};