import esbuild from "esbuild"; import htmlMinifier from "html-minifier-terser"; import fsSync from "fs"; const fs = fsSync.promises; export default async ()=>{ const esbuildProm = esbuild.build({ entryPoints: [`${global.cwd}/views/index.js`, `${global.cwd}/views/index.css`], bundle: true, minify: true, sourcemap: process.env.NODE_ENV === "production", write: false, outdir: `${global.cwd}/views/build/` }); const htmlProm = fs.readFile(`${import.meta.dirname}/views/index.html`, "utf-8"); const [build, html] = await Promise.all([esbuildProm, htmlProm]); let js, css; for(let i = 0; i < build.outputFiles.length; i++){ if(build.outputFiles[i].path.endsWith(".js")){ js = build.outputFiles[i].text; }else if(build.outputFiles[i].path.endsWith(".css")){ css = build.outputFiles[i].text; } } let data = await htmlMinifier.minify(html, { collapseBooleanAttributes: true, collapseInlineTagWhitespace: true, collapseWhitespace: true, conservativeCollapse: true, decodeEntities: true, noNewlinesBeforeTagClose: true, removeComments: true }); data = data.replace('', ``); data = data.replace('', ``); if(process.env.NODE_ENV !== "production"){ fs.writeFile(`${import.meta.dirname}/build.html`, data); } return data; }